Java:提高同步函数的线程速度

rov*_*red 1 java multithreading synchronized

for(int ii = 0; ii < 3; ii++)
    executor.execute(new someClass);
Run Code Online (Sandbox Code Playgroud)

VS

someFunction();
someFunction();
someFunction();
Run Code Online (Sandbox Code Playgroud)

哪里

public static void someFunction(){
    synchronized(lock){
       for(int ii = 0; ii < long.MAX_VALUE; ii++);
    }
}


private class someClass implements Runnable {

   public void run() {          
     someFunction(); //someFunction() is  a synchronized function
   }
}
Run Code Online (Sandbox Code Playgroud)

对不起,如果这可能是一个相当模糊的问题.我有一个同步的someFunction(),我希望按顺序调用3次,另一次调用3个线程,其中每个执行someFunction()任务.因为,它是同步的,只有1个线程可以访问,速度差异几乎相同,3个线程对1个线程.我也不允许修改或不同步someFunction().我想知道是否有任何方法可以加快我使用线程的多线程方式?也许通过线程如何排队或什么?谢谢你的帮助.

Thi*_*ilo 6

不可以.无法同时运行同步方法(在同一对象上)多次.这是synchronized关键字的一点.

同步可能会成为性能瓶颈,但减少这种情况的唯一方法是减少需要在这些关键部分完成的工作量.通常代码过于保守,也许并非一切都需要在同步块中.但这需要深入理解和重写代码,没有什么可以通过一些神奇的设置来调整(如果你删除太多的同步,你可能会破坏事情;很难获得多线程代码).