Java 如何避免使用相同参数的多个线程执行方法?

Java 如何避免使用相同参数的多个线程执行方法?,java,multithreading,thread-safety,Java,Multithreading,Thread Safety,如果多个线程传递相同的参数,如何避免从多个线程执行方法。 例如,我有以下方法: public void sync(int x){ //sync code -> write code here which is eligible for sync } 如果此方法使用参数x=5运行,并且出现另一个具有相同值x=5的请求,则应将其添加到队列中。您可以使用 您可以简单地使用 public synchronized void sync(int x){ //Bo

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

public void sync(int x){    

    //sync code -> write code here which is eligible for sync
}
如果此方法使用参数
x=5
运行,并且出现另一个具有相同值
x=5
的请求,则应将其添加到队列中。

您可以使用

您可以简单地使用

   public synchronized void sync(int x){
       //Body of method

}

基本上,这太宽泛了。例如:没有简单的机制来做到这一点。如果您真的必须序列化一个参数上的多个线程,那么使用int参数的单个方法就不行了。因为你首先必须设计一个包含多个队列的解决方案。你可以使用java.util.concurrent包中的BlockingQueue来避免从多个线程执行sync方法,但我想避免只在传递相同参数时执行方法
   public synchronized void sync(int x){
       //Body of method