java多線程學習之——多線程中幾種釋放鎖和不釋放鎖的操做

在學習java多線程這一塊知識的時候,遇到了不少個關於線程鎖何時釋放的問題,現總結幾種釋放鎖和不釋放鎖的操做以下:

不釋放鎖:java

  1. 線程執行同步代碼塊或同步方法時,程序調用Thread.sleep(Long l)、Thread.yield()方法暫停當前線程的執行
  2. 線程執行同步代碼塊時,其它線程調用該線程suspend()方法將該線程掛起,該線程不會釋放鎖(同步監視器)
  3. 儘可能避免使用suspend()和resume()來控制線程


釋放鎖:多線程

  1. 當前線程的同步方法、同步代碼塊執行結束
  2. 當前線程的同步方法、同步代碼塊遇到break、return終止該代碼塊、該方法的繼續執行
  3. 當前線程的同步方法、同步代碼塊中出現了未處理Error和Exception,致使異常結束
  4. 當前線程在同步方法、同步代碼塊中執行了線程對象的wait()方法,當前線程暫停,並釋放鎖
相關文章
相關標籤/搜索