总结以下几种情况下释放对同步监视器的锁定:
* 当前线程的同步方法、同步代码块执行结束,当前线程即释放同步监视器。
* 当前线程在同步代码块、同步方法中遇到break、return终止了该代码块、该方法的继续执行。
* 当前线程在同步代码快、同步方法中出现了未处理的Error或Exception,导致异常结束。
* 当前线程执行同步代码块或同步方法时,程序执行了同步监视器对象的wait()方法,则当前线程暂停并释放同步监视器。
还有,调用Thread.sleep()和Thread.yield()方法来暂停线程时不会释放同步监视器。
|
|