Java 多线程 Synchronized 关键字

  自己关于Synchronized关键字的理解

  Synchronized关键字用户同步,其实是用对象锁或则类锁实现的。

Synchronized用于对象实例共有3种情况:

  1. Synchronized整个方法;2 用Synchronized(this); 3用Synchronized(某Object)

用于类也有2种情况

  1. Synchronized整个静态方法; 2用Synchronized(this.class);

 

问题1:

  class XX {

   synchronized public void A (){

    Sleep(20000);

   }

   synchronzied public void B(){

          Sleep(30000);

  }}

Thread A 调用 XX对象的方法A,同时Thread B调用XX对象的方法B, Thread B会堵塞吗? 答案:会。因为用的对象锁。都是XX对象。

 

问题2:

  class XX{

  synchronized public static void sa()

  {

    Sleep(20000);

  } 

 

  synchronzied public static void sb(){

          Sleep(30000);

  }

  

  public static void sc()

 {

  Synchronized(XX.class)

  {

      }

 }

 

}

 

Thread A 调用 XX类方法sa,同时Thread B调用XX类方法sb或sc, Thread B会堵塞吗? 答案:会。因为用的类锁。都是XX类的。

 

posted @ 2017-05-05 10:45  AndrewYUE  阅读(98)  评论(0)    收藏  举报