Java释放锁的情况有哪些

1.当前线程的同步方法、同步代码块结束

2.当前线程同步方法、同步代码块遇到break、return

3.当前线程在同步代码块、同步方法中出现未处理的error和exception,导致异常结束

4.当前线程在同步代码块、同步方法中调用了线程对象的wait()方法,当前线程暂停,并释放锁

 

注意:Thread.sleep()、Thread.yield()方法暂停当前线程执行,不会释放锁;其他线程调用该线程的suspend()方法将该线程挂起,该线程不会释放锁;避免使用suspend()和resume()控制线程,不推荐使用。

posted @ 2021-05-01 16:55  好兵帥克  阅读(405)  评论(0编辑  收藏  举报