您的位置:首页 > 编程语言 > Java开发

java synchronized 关键字(2)对象监视器为class

2016-11-28 21:42 435 查看

在java多线程中 synchronized 是非常重要的,也是经常用到的

对于synchronized关键字要注意两点

synchronized对象监视器为Object的时候

synchronized对象监视器为Class的时候

对象监视器为CLASS

例如下面代码

public class A {

static synchronized public void MethodA(){
System.out.println("this is static MethodA");
}
static synchronized public void MethodB(){
System.out.println("this is static MethodB");
}

static public void MethodC(){
System.out.println("this is static MethodC");
}
}


当两个线程分别调用 A.MethodA() 和 A.MethodB() 的时候 这两个方法是不能同时执行的,因为synchronized 锁的是A 这个class,A 里面被synchronized 关键字标记的方法只能串行,也就是同一时间只有一个synchronized 标记的方法能运行。A.MethodA() 运行 A.MethodB()就要等待,

但A.MethodC()可以运行,因为MethodC没有被标记,属于非线程安全。不受关键字影响。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 多线程