首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

synchronized 方法 和 synchronized代码块 竞争的是同一把锁吗?解决方法

2012-04-03 
synchronized 方法 和 synchronized代码块 竞争的是同一把锁吗?如果一个类如下classA{privatesynchronized

synchronized 方法 和 synchronized代码块 竞争的是同一把锁吗?
如果一个类如下
class   A   {
private   synchronized   void   fun1()   {

}

private   synchronized   void   fun2()   {

}
}
我的理解是这两个同步的方法竞争的是同一把锁this,在访问其中的一个方法的过程中,另一个方法是不能访问的,我说的访问是objectName.的形式

如果是这样的形式

class   A   {
private   synchronized   void   fun1()   {

}

private     void   fun2()   {
                                synchronized(this){
                                         
                                }
}
}

这样能达到相同的效果吗,也就是说,在方法签名中声明为synchronized   和   在代码块中竞争this锁是同一把锁吗,谢谢,欢迎大家发表意见。

[解决办法]
两者同效。
[解决办法]
这两者作用一样的
从JDK 1.0开始,每个Object都有一个隐含的锁,楼主用的都是类的实例锁
线程可以通过两种方法来获得这个锁,就是楼主用的两种方法
[解决办法]
所有的锁锁的都是对象,不是方法,也不是代码块
[解决办法]
这样写也可以它们竞争的是同一把锁
[解决办法]
应该是一把锁,对象锁。。。。。
[解决办法]
是同一把锁
因为两个同步方法都是以当前对象为锁

热点排行