黑马程序员技术交流社区

标题: 你synchronized()的锁都是什么牌子的 [打印本页]

作者: 黑马朱超    时间: 2013-3-21 22:31
标题: 你synchronized()的锁都是什么牌子的
本帖最后由 黑马朱超 于 2013-3-23 09:39 编辑

毕老师在将多线程的同步问题的时候用到的锁,牌子太多了,
比如synchronized(this)//调用的对象
synchronized(obj)//上帝
synchronized(ArrayWithLockOrder.class)//类
synchronized(Mylock.lockb)//类的成员变量

同步的锁的选用有什么标准?


作者: 谢洋    时间: 2013-3-21 22:58
不管什么锁,你如果对一段码代同步,那你必须确保被多个线程并访问的代码是被同一把锁锁上的
作者: 黑马朱超    时间: 2013-3-21 23:07
谢洋 发表于 2013-3-21 22:58
不管什么锁,你如果对一段码代同步,那你必须确保被多个线程并访问的代码是被同一把锁锁上的 ...

恩,会互相影响的线程之间要使用同一把锁,所以使用锁的时候要对那些线程同时采用同步代码块。。。不能只添加其中的一部分
作者: 黑马朱超    时间: 2013-3-22 18:35
还有人来回答一下么?我等亮点
作者: 谭辉    时间: 2013-3-22 18:41
同步函数的锁是this
静态同步函数的锁是Class对象,即该方法所在类的字节码文件对象。因为静态方法中不可以定义this.

作者: 黑马朱超    时间: 2013-3-22 19:04
谭辉 发表于 2013-3-22 18:41
同步函数的锁是this
静态同步函数的锁是Class对象,即该方法所在类的字节码文件对象。因为静态方法中不可以 ...

嗯,想起来了....




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2