java synchronized 的用法问题
发布网友
发布时间:2022-05-02 04:06
我来回答
共2个回答
热心网友
时间:2022-06-28 01:31
1,sleep方法不会释放var锁,即在方法未完成之前其他线程不能再执行此同步模块,即不能再获得var锁,对变量的同步读写控制应该是这样:
private volatile int a;
public synchronized void setA(final int a)
{
this.a = a;
}
public synchronized int getA()
{
return a;
}
2,m()使用类锁进行加锁,其他线程不可再访问带该类锁的同步模块;其他未加锁方法与变量可以访问;
3,this是指类被创建时的实例对象,该方法使用了对象锁进行加锁,原理与1的var(应该是Object)相同。
参考资料:http://blog.myspace.cn/e/406181258.htm
热心网友
时间:2022-06-28 01:31
1,var 跟var地址一样的访问都要受同步*
2,同一实例访问该方法都会同步
3,this是当前类实例,类实例内访问这段代码都会同步