文章詳情頁
java - reentrantlock如何鎖住某個特定的對象?
瀏覽:77日期:2023-11-06 10:32:25
問題描述
如果我有一個長度為10個數組對象:
Object[] arr=new Object[10];
每個對象的訪問都是互斥的,但是多個對象之間訪問是可以并發的。那么使用synchonized可以這樣:
synchoronized(arr[i]){ //...}
我向問,如果使用 reentrantlock如何實現這樣的鎖?
備注:這樣的使用場景我是否需要同時建立10個Lock數組? Lock[] lockList=new ReentrantLock[10]
if(lockList[i].trylock())[ //}
這樣?
問題解答
回答1:初始化鎖:
Lock[] lockList = new ReentrantLock[10];for (int i = 0; i < 10; i ++) { lockList[i] = new ReentrantLock();}
需要加鎖時:
lockList[i].lock();try { ...} finally { lockList[i].unlock();}
標簽:
java
相關文章:
1. javascript - 怎樣定位一個動作調用了哪個js,不打斷點調試?2. javascript - 如何清除向可編輯的(contenteditable)元素里粘貼的文本的標簽和樣式?3. javascript - js正則替換日期格式問題4. javascript - 關于微信掃一掃的技術問題5. javascript - ios上fixed定位問題,定位在底部的按鈕不顯示了,但是又可以點擊到,換了一個類名就可以顯示了,但是設置的字體大小卻失效了6. javascript - webpack 打包 reactjs項目 css 分離7. javascript - vuex中子組件無法調用公共狀態8. javascript - 請教移動端從詳情頁返回到列表頁原來位置的問題?9. javascript - (_a = [""], _a.raw = [""],....); js一個小括號的是什么意思?10. javascript - Vue.js的ElementUI庫中,如何主動觸發checkbox組件的change事件?
排行榜
