文章详情页
java - reentrantlock如何锁住某个特定的对象?
浏览:19日期: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 - nodejs 如何同步执行某些模块函数?2. docker-remote-api - docker 有哪些Web管理UI3. 用Java写发送邮件的程序,经常被当做垃圾邮件处理怎么解决4. java - Spring boot启动时报错?5. java中可以通过类的class属性得到该类的字节码文件对象?6. php - java程序员必须要学GUI这块吗?7. java - tomcat部署jave-web,网页访问html中文乱码。8. java - @Component重新给bean命名后,为什么@Resource找不到?9. java - 当在子类中声明一个父类中存在的变量后,自动调用的父类构造函数不起作用。10. a标签将 display 设置为 block 后,其内部内容无法将a标签宽度撑开
排行榜