`

Java:synchronized修饰符在静态方法与非静态方法上的区别

    博客分类:
  • JAVA
阅读更多

Java:synchronized修饰符在静态方法与非静态方法的区别

synchronized静态方法上表示调用前要获得类锁,而在非静态方法上表示调用此方法前要获得对象锁。
public class StaticSynDemo {

private static String a="test";

//等同于方法print2
public synchronized void print1(String b){ //调用前要取得StaticSynDemo实例化后对象
   System.out.println(b+a);
}
public void print2(String b){
   synchronized (this) {//取得StaticSynDemo实例化后对象
    System.out.println(b+a);
   }
}
//等同于方法print4
public synchronized static void print3(String b){//调用前要取得StaticSynDemo.class类
   System.out.println(b+a);
}
public static void print4(String b){
   synchronized (StaticSynDemo.class) { //取得StaticSynDemo.class类
    System.out.println(b+a);
   }
}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics