synchronized 问题

thinkinjava123 2009-11-08 03:16:17
问题1: 请问下面2个相等吗?

public synchronized void setValue(){}


public void setValue() {
synchronized(this) {}
}

如果上面2个是相等的 那么可以说上面2个是完全相同的吗?


问题2: 像public synchronized void setValue(){}
public synchronized void setValue1(){}
这种东西 这个synchronized锁是把所有的这个类中的同样2个setValue方法也进行了同步 不仅如此,也把所有的这个类生产的instance中的这2个方法同步了 是吗?
...全文
84 3 打赏 收藏 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
whut0802 2009-11-08
  • 打赏
  • 举报
回复
问题1
public synchronized void setValue(){}
可以防止多个线程同时访问这个对象的synchronized方法(如果一个对象有多个synchronized方法,只要一个线程访问了其中的一个synchronized方法,其它线程不能同时访问这个对象中任何一个synchronized方法)。这时,不同的对象实例的synchronized方法是不相干扰的。也就是说,其它线程照样可以同时访问相同类的另一个对象实例中的synchronized方法;
public void setValue() { synchronized(this) {} }
表示只对这个区块的资源实行互斥访问,它的作用域是当前对象;
所以个人认为这两个方法干的事情是一样的,至于是不是完全相同,确实不知。
问题2
不同的对象实例的synchronized方法是不相干扰的。也就是说,其它线程照样可以同时访问相同类的另一个对象实例中的synchronized方法;





zhengzeng 2009-11-08
  • 打赏
  • 举报
回复
问题1
基本上一样
问题2
synchronized是对象的加锁。
一头头 2009-11-08
  • 打赏
  • 举报
回复
1. 是的
2. 不是

62,620

社区成员

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

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