作家
登录

Java多线程之synchronized关键字详解

作者: 来源: 2017-05-29 14:39:09 阅读次 我要评论

public void run() 
  •     { 
  •         example.execute(); 
  •     } 
  •  
  • } 
  • 是否在execute()办法前加上synchronized关键字,这个例子法度榜样的履行结不雅会有很大年夜的不合。

    如不雅不加synchronized关键字,则两个线程同时履行execute()办法,输出是两组并发的。

    2.多个办法的多线程情况

    将法度榜样修改一下,Example类中再参加一个办法execute2()。

    之后再写一个线程类Thread2,Thread2中的run()办法履行的是execute2()。Example类中的两个办法都是被synchronized关键字润饰的。

    如许就可以自行规定上锁对象。

    1. public class ThreadTest 
    2. { 
    3.     public static void main(String[] args) 
    4.     { 
    5.         Example example = new Example(); 
    6.  
    7.         Thread t1 = new Thread1(example); 
    8.         Thread t2 = new Thread2(example); 
    9.  
    10.         t1.start(); 
    11.         t2.start(); 
    12.     } 
    13.  
    14. } 
    15.  
    16. class Example 
    17. { 
    18.     public synchronized void execute() 
    19.     { 
    20.         for (int i = 0; i < 20; ++i) 
    21.         { 
    22.             try 
    23.             { 
    24.                 Thread.sleep((long) Math.random() * 1000); 
    25.             } 
    26.             catch (InterruptedException e) 
    27.             { 
    28.                 e.printStackTrace(); 
    29.             } 
    30.             System.out.println("Hello: " + i); 
    31.         } 
    32.     } 
    33.  
    34.     public synchronized void execute2() 
    35.     { 
    36.         for (int i = 0; i < 20; ++i) 
    37.         { 
    38.             try 
    39.             { 

        推荐阅读

        PHP与Golang如何通信?

      惯例的筹划: 用Golang写一个http/TCP办事,php经由过程http/TCP与Golang通信 将Golang经由较多封装,做为php扩大。 PHP经由过程体系敕令,调取Golang的可履行文件存在的问题: >>>详细阅读


      本文标题:Java多线程之synchronized关键字详解

      地址:http://www.17bianji.com/lsqh/35484.html

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)