如果多个线程传递相同的参数,如何避免方法执行。 例如,我有这个方法:
public void sync(int x){
//sync code -> write code here which is eligible for sync
}
如果此方法使用参数x=5
运行,并且另一个具有相同值x=5
的请求出现,则应将其添加到队列中。
答案 0 :(得分:3)
您可以使用name-based lock。
public void sync(int x){
Lock lock = new NameBasedLock(String.valueOf(x));
lock.lock();
try {
doSomething();
} finally {
lock.unlock();
}
}
答案 1 :(得分:0)
您可以使用
public synchronized void sync(int x){
//Body of method
}