黑马程序员技术交流社区

标题: 同步代码块的 精确判断问题?? [打印本页]

作者: 杨华东    时间: 2012-10-10 00:54
标题: 同步代码块的 精确判断问题??
  1. class Test
  2. {
  3. synchronized static void sayHello3()
  4. {

  5. }

  6. synchronized void getX(){}
  7. }
复制代码
上面两个代码块 同步吗???如何判断???把问题扼杀在摇篮   是老毕说的。。。感觉有道理  求大神帮助

作者: 葛旭东    时间: 2012-10-10 09:22
两个同步函数同不同步要看它们的锁是否一致。
synchronized void getX(){}  是一般同步函数,锁是this,即Test类的对象;

synchronized static void sayHello3(){}  是静态同步函数,锁不是this,而是Test.class。

所以这是不同步的!!!
作者: 刘伟平    时间: 2012-10-10 09:25
你这叫同步函数。是不是同步要看锁是否相同。
第一个是静态的同步函数,锁对象是类名.class字节码文件;
第二个是非静态的同步函数,锁对象是调用者所表示的对象。
作者: 黑马乔荣柱    时间: 2012-10-10 10:05
本帖最后由 彼岸花 于 2012-10-10 10:11 编辑

不同步啊

你这是静态同步函数,默认的锁的对象是this.class
这是一般的同步函数,默认的锁的对象是this
同步代码块的格式是
synchronized(this){

}
加油!!




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