【发布时间】:2015-10-21 15:59:00
【问题描述】:
我有一个由 3 个并发线程在对象实例上调用的方法。我感兴趣的锁是基于值而不是对象。例如,如果两个线程 (T1,T2) 正在处理 RecordID=123,而 T3 正在处理 RecordID=456。该方法应该只锁定 T2 并且 T3 应该继续执行。
目前,我正在使用 Lock,但如果 T1 被锁定,它将同时锁定 T2 和 T3。
public void doSomething(String id){
try {
lock.lock();
MyRecord r = find(id);
...
....
} finally{
lock.unlock();
}
}
【问题讨论】:
-
@VictorSorokin 的解决方案效果很好.. 谢谢.. 我也会发布我的问题的解决方案。
标签: java multithreading synchronization thread-safety locking