3
我知道Class对象上的静态同步锁定和Object实例上的非静态锁定。线程中的静态同步和非静态同步方法行为差异
在这个问题上接受的答案但是:Static versus non-static lock object in synchronized block
当您使用非静态锁定对象:
- 线程1个通话o1.foo()
- 线程2调用o1.foo(),将不得不等待线程1完成
- 线程3调用o2.foo(),它可以继续,不在意线程1和2
为什么线程3只是继续而没有关于线程1和2.应该线程3必须等待从线程1或线程2获取对象实例'this'的锁之后才能继续?
你能指定更多的问题吗?因为你提出的问题在你提供的链接中得到了回答 - 它们是不同的对象实例,所以线程3锁定了线程1和线程2中的另一个锁。 – Nier
是的,我认为它们是相同的实例,因此造成了混淆。 –