Synchronized的问题

imdobetter 2004-10-11 12:43:23
有两个代码:
public synchronized int HAHA()
{
//处理object。。
}
*********
publc int HAHA()
{
synchronized(object)
{
//处理object。。
}
}

*********
上面这两部分代码有区别吗?第二段代码可否用第一段代码来设计呢?
...全文
188 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
programeyonger 2005-01-04
  • 打赏
  • 举报
回复
学习到了!!
wzrlover 2004-10-12
  • 打赏
  • 举报
回复
同步方法和同步代码快重要的区别就是,对象锁的生命周期不同!
imdobetter 2004-10-12
  • 打赏
  • 举报
回复
晕,对象中的一个对象啊。
public class HAHA{
public Object object;
public synchronized int ha1(){
//处理object。。
}
publc int ha2(){
synchronized(object)
{
//处理object。。
}
}
}
//**********************
public HAHA haha1;
public HAHA haha2;
public HAHA haha3;
haha.object : haha1 是该对象,而objet是该对象中的对象


锁住该对象中的对象,可以保证任何一个haha对象中的object对象都保持同步.而锁住该对象仅仅针对本对象调用的函数进行了同步,这样分析对吗?
xiaohaiz 2004-10-12
  • 打赏
  • 举报
回复
<<
我的理解是这样的:
锁住该对象中的对象,可以保证任何一个该对象的对象都保持同步.而锁住该对象仅仅针对本对象进行了同步,这样分析对吗?
>>

表达的什么啊,什么叫该对象的对象。。
imdobetter 2004-10-12
  • 打赏
  • 举报
回复
jiangnanyuzi(江南愚子) bdsc() --
一个是锁住了调用该方法的对象,另一个是锁住了synchronized(object)中的object.那么我所看到的类,object本身就是调用该方法的对象中的一个对象. 一个是锁住了该对象.另一个是锁住了该对象中的对象.这么做是什么作用呢?
我的理解是这样的:
锁住该对象中的对象,可以保证任何一个该对象的对象都保持同步.而锁住该对象仅仅针对本对象进行了同步,这样分析对吗?

============================================
大家共同交流,共同进步
bdsc 2004-10-11
  • 打赏
  • 举报
回复
public synchronized int HAHA()
{
//处理object。。
}

就同步机制相当于:
public int HAHA()
{
synchronized(this) {
//处理object。。
}
}
samsung45 2004-10-11
  • 打赏
  • 举报
回复
当然有区别,如果使用第二段代码,方法HAHA中允许有非同步化的代码。
江南愚子 2004-10-11
  • 打赏
  • 举报
回复
bdsc()说的对,synchronized关键字放在方法声明前,则调用某对象的该方法的线程必须获得该对象的锁,而synchronized如果放在方法体中,则调用该方法的线程必须获得的锁是其后括号中的对象的锁,于是在方法体中的synchronized(this)就相当于方法声明前加synchronized
mlovex 2004-10-11
  • 打赏
  • 举报
回复
很不一样

62,615

社区成员

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

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