首页 > 代码库 > 锁在什么时候释放?
锁在什么时候释放?
2014/9/4
锁在什么时候释放?
分为两种情况:
一。在该线程的同步方法,同步代码块中。
1.该线程的同步方法、同步代码块执行完。
2.该线程同步方法、同步代码块中遇到return,break.
3.该线程同步方法、同步代码块中发生了未处理的Exception、Error
二、在其他线程中。
4.其他线程执行了同步监听器对象的wait().
5.其他线程执行了当前线程的stop.
在以下情况中,线程不会释放锁。(在当前线程的同步代码中)
1.在该线程的同步方法,同步代码块中thread.sleep(),thread.yield().
2.其他线程调用了该线程的suspend()方法。
便于记忆:
在当前线程的同步代码块中
线程停止(线程停止只有run()方法结束,而run()方法结束,包含下述述情况)。(stop方法失效)
会引起锁释放的条件:
1.同步方法、同步代码块执行完。
2.同步方法、同步代码块中遇到return,break.
3.同步方法、同步代码块中发生了未处理的Exception、Error
4.同步方法、同步代码块中,wait();
不会引起锁释放:
1.Thread.sleep();
2.Thread.yield();
本文出自 “厚积薄发” 博客,请务必保留此出处http://duanzhenyue.blog.51cto.com/9360091/1550142
锁在什么时候释放?
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。