A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 徐芾清 中级黑马   /  2014-3-8 19:06  /  747 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

synchronized(){}
静态方法中的同步代码块的锁是什么?是不是必须传递Obj.class进去?

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

3 个回复

倒序浏览
多线程学的不怎么样,不过我记得任何存在的*.class都可以的吧。
回复 使用道具 举报
非静态同步方法(函数)的锁是this ,而静态的同步方法(函数),使用的锁是该方法所在类的字节码文件对象。 就是  类名.class
而你想说的是同步代码块吗?同步代码块你可以传进任意的Object 做为锁。

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
不是必须的,只要是Object类的对象或者子类的对象都行。

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

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马