黑马程序员技术交流社区

标题: synchronized锁的问题 [打印本页]

作者: 徐芾清    时间: 2014-3-8 19:06
标题: synchronized锁的问题
synchronized(){}
静态方法中的同步代码块的锁是什么?是不是必须传递Obj.class进去?
作者: 桃华月禅    时间: 2014-3-8 21:31
多线程学的不怎么样,不过我记得任何存在的*.class都可以的吧。
作者: 平凡成就非凡    时间: 2014-3-8 21:54
非静态同步方法(函数)的锁是this ,而静态的同步方法(函数),使用的锁是该方法所在类的字节码文件对象。 就是  类名.class
而你想说的是同步代码块吗?同步代码块你可以传进任意的Object 做为锁。
作者: 黑马晓志    时间: 2014-3-9 15:00
不是必须的,只要是Object类的对象或者子类的对象都行。

还有一点需要特别注意就是 public  sychronized void method(){ //方法内容 },非静态同步方法的锁默认是this。也就是说,这个代码也可以这样写public void method(){  sychronized(this){  //方法内容 }   }。而静态方法的锁默认是类.class。




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