您的位置:首頁技術文章
文章詳情頁

java - reentrantlock如何鎖住某個特定的對象?

瀏覽:66日期: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
相關文章:
国产综合久久一区二区三区