软讯网络 > 编程语言 > Java > 有条件的同步方法
【标 题】:有条件的同步方法
【关键字】:
【来 源】:http://www.blogjava.net/yangxp/archive/2006/10/09/74075.html
有条件的同步方法

??? 在做多线程程序时我们可能要对某段代码的同步是有条件的,只有对满足同一条件的请求才排队访问,对与不满足这样条件的请求可以并发访问,在处理这样的需求的时候我们可以容易的想到,对于这个特定的条件做一个抽象,让它作为我们同步锁。下面的代码可以说明这个处理过程:
?1?


?2?
//?定义锁
?3?
private?Map?locks?=?new?HashMap();
?4?
private?Object?getLock(Object?key)?{
?5?
????synchronized?(locks)?{
?6?
????????if?(!locks.containsKey(key))?{
?7?
????????????locks.put(key,?new?Object());
?8?
????????}
?9?
????????return?locks.get(key);
10?
????}
11?
}
12?


13?
//?需要同步的代码
14?
synchronized?(getLock(id))?{
15?
????//?TODO
16?
}
17?


18?
【相关文章】
没有相关文章