码迷,mamicode.com
首页 > 其他好文 > 详细

锁在什么时候释放?

时间:2014-09-10 03:00:10      阅读:211      评论:0      收藏:0      [点我收藏+]

标签:时机   同步锁释放   

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

锁在什么时候释放?

标签:时机   同步锁释放   

原文地址:http://duanzhenyue.blog.51cto.com/9360091/1550142

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!