多线程中锁的释放问题

Posted smallvampire

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多线程中锁的释放问题相关的知识,希望对你有一定的参考价值。

不会释放锁的操作:

  • 线程执行同步代码或同步方法时,程序调用了Thread.sleep()、Thread.yield()方法暂停当前线程的执行;
  • 线程执行同步代码块时,其它线程调用了该线程的suspend()方法将该线程挂起,该线程不会释放锁(同步监视器);

注意:应尽量避免使用suspend()和resume()来控制线程

释放锁的操作:

  • 当前线程的同步方法、同步代码块执行结束;
  • 当前线程在同步代码块、同步方法中遇到break、reture终止了该代码块、该方法的继续执行;
  • 当前线程在同步代码块、同步方法中出现了为处理的Error和Exception,导致异常结束;
  • 当前线程在同步代码块、同步方法中执行了线程对象的wait()方法,当前线程暂停,并释放锁。

以上是关于多线程中锁的释放问题的主要内容,如果未能解决你的问题,请参考以下文章

关于Java中锁的总结

多线程中锁的种类。

JAVA中锁的使用

java多线程学习之——多线程中几种释放锁和不释放锁的操作

Java线程安全与多线程开发

操作系统中锁的原理(转)