文章详情页
java - reentrantlock如何锁住某个特定的对象?
浏览:71日期: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. python - 请问这两个地方是为什么呢?2. sql语句 - 如何在mysql中批量添加用户?3. node.js - mysql如何通过knex查询今天和七天内的汇总数据4. mysql - JAVA怎么实现一个DAO同时实现查询两个实体类的结果集5. mysql建表报错,查手册看不懂,求解?6. mysql - PHP定时通知、按时发布怎么做?7. 怎么php怎么通过数组显示sql查询结果呢,查询结果有多条,如图。8. 事务 - mysql共享锁lock in share mode的实际使用场景9. mysql - 数据库建字段,默认值空和empty string有什么区别 11010. javascript - 按钮链接到另一个网址 怎么通过百度统计计算按钮的点击数量
排行榜
