我开发了一个多线程Java应用程序,使用线程处理一批工作。我有一个主线程将工作分配给不同的线程处理。一切正常。
现在我已经改变了应用程序,使它能够在多个Java进程中运行,每个进程都像以前一样进行多线程处理。例如,我以前使用8个线程在一个Java进程中处理8个作业,现在我可以有2个Java进程,每个进程有4个线程,仍然处理8个作业总共。
该应用程序的模型如下:调度程序将获取需要完成的工作,然后将它们分配到线程池。线程之间没有同步或通信。
我注意到后一种方法有相当大的性能提升,想知道原因。有人能否对此提供一些见解?操作系统进程调度比Java线程更加有效吗?当我真正需要这种性能提升时,我是否应该将其用作一般准则?谢谢。