java线程释放锁的问题classTestThreadimple
class TestThread implements runnae{ Object o1 = new Object(), o2 = new Object(); public void run() { synchronized(o1) {...} synchronized(o2) {...} } } o1和o2是两个对象,请问o1和o2的锁是在该线程全部结束后释放,还是结束o1{}块里的语句,就先释放o1的锁,然后结束o2后在释放o2的锁?
你这样写锁的并不是TestThread的对象,而是分别锁o1和o2。 synchronized(o1) {...}结束后,o1的锁解开; synchronized(o2) {...}结束后,o2的锁解开。 然后该线程结束。