Java:提高同步函数的线程速度
在哪里Java:提高同步函数的线程速度,java,multithreading,synchronized,Java,Multithreading,Synchronized,在哪里 很抱歉,这可能是一个相当模糊的问题。我有一个同步的someFunction,我想连续调用3次,另一次调用3个线程,每个线程运行someFunction的任务。由于它是同步的,一次只能访问1个线程,因此3个线程与1个线程的速度差几乎相同。我也不允许修改或取消同步某些函数。我想知道是否有任何方法可以从我如何使用线程的角度来加速多线程方式?也许是通过线程排队之类的方式?感谢您的帮助。否。无法在同一对象上同时多次运行同步方法。这就是synchronized关键字的要点 同步可能会成为性能瓶颈,但
很抱歉,这可能是一个相当模糊的问题。我有一个同步的someFunction,我想连续调用3次,另一次调用3个线程,每个线程运行someFunction的任务。由于它是同步的,一次只能访问1个线程,因此3个线程与1个线程的速度差几乎相同。我也不允许修改或取消同步某些函数。我想知道是否有任何方法可以从我如何使用线程的角度来加速多线程方式?也许是通过线程排队之类的方式?感谢您的帮助。否。无法在同一对象上同时多次运行同步方法。这就是synchronized关键字的要点
同步可能会成为性能瓶颈,但减少这一瓶颈的唯一方法是减少在这些关键部分需要完成的工作量。通常代码过于保守,可能不是所有东西都需要在同步块中。但这需要深入理解和重写代码,没有什么可以通过一些神奇的设置进行调整,如果删除了太多的同步,可能会破坏一些东西;获得正确的多线程代码是困难的。否。无法在同一对象上同时多次运行同步方法。这就是synchronized关键字的要点
同步可能会成为性能瓶颈,但减少这一瓶颈的唯一方法是减少在这些关键部分需要完成的工作量。通常代码过于保守,可能不是所有东西都需要在同步块中。但这需要深入理解和重写代码,没有什么可以通过一些神奇的设置进行调整,如果删除了太多的同步,可能会破坏一些东西;获得正确的多线程代码是很困难的。考虑一种最能描述您想要实现的实际情况。请给我们一个您试图实现的示例。这将有助于理解,从而为您提供有用和实用的解决方案
这个问题很模糊,可以用很多方式来解释 考虑一个最能描述您想要实现的实际情况。请给我们一个您试图实现的示例。这将有助于理解,从而为您提供有用和实用的解决方案
这个问题很模糊,可以用很多方式来解释 如果不知道函数在做什么,就无法知道。如果runnable只调用一个同步函数,那么多线程只会有助于降低性能。如果某个函数只是forint i=0;ii
for(int ii = 0; ii < 3; ii++)
executor.execute(new someClass);
someFunction();
someFunction();
someFunction();
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
}
}