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

angelleecash 2007-05-21 05:19:11
如果一个类如下
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锁是同一把锁吗,谢谢,欢迎大家发表意见。
...全文
793 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
icebluenet 2007-05-22
  • 打赏
  • 举报
回复
应该是一把锁,对象锁。。。。。
gg16578 2007-05-22
  • 打赏
  • 举报
回复
这样写也可以它们竞争的是同一把锁
coolzyt 2007-05-22
  • 打赏
  • 举报
回复
所有的锁锁的都是对象,不是方法,也不是代码块
angelleecash 2007-05-22
  • 打赏
  • 举报
回复
angelleecash 2007-05-22
  • 打赏
  • 举报
回复
angelleecash 2007-05-22
  • 打赏
  • 举报
回复
就是说竞争的是作为锁的对象,然后用这把锁确定需要排他访问的范围,代码块和方法,是这个意思吗
wxywwwt 2007-05-22
  • 打赏
  • 举报
回复
有兴趣,但不懂.
我要努力--呵呵
tomkai 2007-05-22
  • 打赏
  • 举报
回复
这两种方法表示同步是一样的....同一把锁

区别在于..如果方法里所有代码块都是同步内容的话直接赋于方法以同步参数..

如果不是所有代码都是同步内容就用同步代码块的方法

引用同步锁的机制在于该资源是共享资源,并防止该资源被多个线程同时修改...

==========
竞争的锁应该是调用者吧
比如说
A a = new A();

如果我调用a.fun1();或者a.fun2();
这两个方法竞争的应该就是这个调用的a吧
=======================
就你的声明来说共享资源是实例a中的相关参数...



angelleecash 2007-05-22
  • 打赏
  • 举报
回复
看来是这样了,谢谢各位。
做实验验证。
结贴。
baileyfu 2007-05-22
  • 打赏
  • 举报
回复
是同一把锁
因为两个同步方法都是以当前对象为锁
angelleecash 2007-05-22
  • 打赏
  • 举报
回复
竞争的锁应该是调用者吧
比如说
A a = new A();

如果我调用a.fun1();或者a.fun2();
这两个方法竞争的应该就是这个调用的a吧
wssssw 2007-05-21
  • 打赏
  • 举报
回复
这两者作用一样的
从JDK 1.0开始,每个Object都有一个隐含的锁,楼主用的都是类的实例锁
线程可以通过两种方法来获得这个锁,就是楼主用的两种方法
angelleecash 2007-05-21
  • 打赏
  • 举报
回复
angelleecash 2007-05-21
  • 打赏
  • 举报
回复
今天提问真不是时候,大家都下班了把,希望明天更多朋友能说两句,谢谢。
angelleecash 2007-05-21
  • 打赏
  • 举报
回复
有没有哪位能多解释一点。
z_lping 2007-05-21
  • 打赏
  • 举报
回复
两者同效。
angelleecash 2007-05-21
  • 打赏
  • 举报
回复
angelleecash 2007-05-21
  • 打赏
  • 举报
回复
angelleecash 2007-05-21
  • 打赏
  • 举报
回复
chenliangjob 2007-05-21
  • 打赏
  • 举报
回复
帮顶
加载更多回复(5)

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧