reentrantlock如何锁住某个特定的对象?

如果我有一个长度为10个数组对象:

Object[] arr=new Object[10];

每个对象的访问都是互斥的,但是多个对象之间访问是可以并发的。
那么使用synchonized可以这样:

synchoronized(arr[i]){
    //...
}

我向问,如果使用 reentrantlock如何实现这样的锁?

备注:这样的使用场景我是否需要同时建立10个Lock数组? Lock[] lockList=new ReentrantLock[10]

if(lockList[i].trylock())[
    //
}

这样?

小怪兽爱吃肉
浏览 3066回答 1
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(); }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java