日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java中的locksupport_详解Java多线程编程中LockSupport

發布時間:2025/3/20 java 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java中的locksupport_详解Java多线程编程中LockSupport 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

LockSupport是用來創建鎖和其他同步類的基本線程阻塞原語。

LockSupport中的park() 和 unpark() 的作用分別是阻塞線程和解除阻塞線程,而且park()和unpark()不會遇到“Thread.suspend 和 Thread.resume所可能引發的死鎖”問題。

因為park() 和 unpark()有許可的存在;調用 park() 的線程和另一個試圖將其 unpark() 的線程之間的競爭將保持活性。

基本用法LockSupport 很類似于二元信號量(只有1個許可證可供使用),如果這個許可還沒有被占用,當前線程獲取許可并繼 續 執行;如果許可已經被占用,當前線 程阻塞,等待獲取許可。

運行該代碼,可以發現主線程一直處于阻塞狀態。因為 許可默認是被占用的 ,調用park()時獲取不到許可,所以進入阻塞狀態。

如下代碼:先釋放許可,再獲取許可,主線程能夠正常終止。LockSupport許可的獲取和釋放,一般來說是對應的,如果多次unpark,只有一次park也不會出現什么問題,結果是許可處于可用狀態。

LockSupport是可不重入 的,如果一個線程連續2次調用 LockSupport .park(),那么該線程一定會一直阻塞下去。

這段代碼打印出a和b,不會打印c,因為第二次調用park的時候,線程無法獲取許可出現死鎖。

下面我們來看下LockSupport對應中斷的響應性

最終線程會打印出thread over.true。這說明 線程如果因為調用park而阻塞的話,能夠響應中斷請求(中斷狀態被設置成true),但是不會拋出InterruptedException 。

LockSupport函數列表

LockSupport示例對比下面的“示例1”和“示例2”可以更清晰的了解LockSupport的用法。

示例1

示例2

運行結果:

說明:park和wait的區別。wait讓線程阻塞前,必須通過synchronized獲取同步鎖。

總結

以上是生活随笔為你收集整理的java中的locksupport_详解Java多线程编程中LockSupport的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。