同步 synchronized 语句的 另外一种写法??

doney_dongxiang 2009-11-11 03:02:10
在一个线程类中有下面两种同步方法

第一种写法

public void run() {
while (true)
{
synchronized (this) {
........
}
}
}




第二种写法


private Object indexLock = new Object();

public void run() {
while (true)
{
synchronized (indexLock) {
........
}
}
}



请问这两种同步方法有什么不同???
...全文
144 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
安小寰 2009-11-11
  • 打赏
  • 举报
回复
这个没有什么可比性,用法不同而已。同样是同步,第一个是通过this引用锁定当前对象,而第二种方法中的同步方法是通过当前对象中的Object变量来锁定声明声明该对象的对象,他们的作用都是锁定当前对象。
hui94781674 2009-11-11
  • 打赏
  • 举报
回复
有点迷糊 。。。
closewbq 2009-11-11
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 healer_kx 的回复:]
第二个粒度要小一些,第一个把本对象当做一个互斥体了。
[/Quote]
同意!
healer_kx 2009-11-11
  • 打赏
  • 举报
回复
第二个粒度要小一些,第一个把本对象当做一个互斥体了。

62,614

社区成员

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

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