zoukankan      html  css  js  c++  java
  • java多线程学习之——多线程中几种释放锁和不释放锁的操作

    在学习java多线程这一块知识的时候,遇到了很多个关于线程锁什么时候释放的问题,现总结几种释放锁和不释放锁的操作如下:

    不释放锁:

    1. 线程执行同步代码块或同步方法时,程序调用Thread.sleep(Long l)、Thread.yield()方法暂停当前线程的执行
    2. 线程执行同步代码块时,其它线程调用该线程suspend()方法将该线程挂起,该线程不会释放锁(同步监视器)
    3. 尽量避免使用suspend()和resume()来控制线程


    释放锁:

    1. 当前线程的同步方法、同步代码块执行结束
    2. 当前线程的同步方法、同步代码块遇到break、return终止该代码块、该方法的继续执行
    3. 当前线程的同步方法、同步代码块中出现了未处理Error和Exception,导致异常结束
    4. 当前线程在同步方法、同步代码块中执行了线程对象的wait()方法,当前线程暂停,并释放锁
  • 相关阅读:
    LeetCode Subsets II
    LeetCode Rotate Image
    LeetCode Palidrome Number
    LeetCode Generate Parentheses
    LeetCode Maximum Subarray
    LeetCode Set Matrix Zeroes
    LeetCode Remove Nth Node From End of List
    Linux Loop设备 使用
    Linux 文件系统大小调整
    LeetCode N-Queens II
  • 原文地址:https://www.cnblogs.com/Mus-Li/p/7351120.html
Copyright © 2011-2022 走看看