如何避免从具有相同参数的多个线程执行方法?

时间:2018-02-12 09:14:02

标签: java multithreading thread-safety

如果多个线程传递相同的参数,如何避免方法执行。 例如,我有这个方法:

public void sync(int x){    

    //sync code -> write code here which is eligible for sync
}

如果此方法使用参数x=5运行,并且另一个具有相同值x=5的请求出现,则应将其添加到队列中。

2 个答案:

答案 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

}