如果在同步块中更改了锁定对象会发生什么

时间:2015-01-19 10:33:46

标签: java multithreading

如果我们修改synchronized块内的锁定对象会发生什么? 我认为同步将失败,任何线程都可以进入同步块。但是当我运行程序时,同步仍然完好无损。为什么?

 synchronized(obj)
  {
   System.out.println("1 " + Thread.currentThread().getId());
   obj = new Object();
   System.out.println("2 " +Thread.currentThread().getId());
  }

这里是完整程序的链接

http://www.javaroots.com/2015/01/java-multithreading-interview-question.html

1 个答案:

答案 0 :(得分:1)

你没有改变对象,你只是创建了一个新对象并告诉编译器你将它命名为“obj”(所以“obj”不再指你的原始对象),所以每次修改“obj”会影响新创建的对象。