Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如果运行时间很短(2毫秒),是否值得使用多个线程?_Java_Multithreading_Parallel Processing - Fatal编程技术网

Java 如果运行时间很短(2毫秒),是否值得使用多个线程?

Java 如果运行时间很短(2毫秒),是否值得使用多个线程?,java,multithreading,parallel-processing,Java,Multithreading,Parallel Processing,我写了一个Java程序。对于小输入,在预热(前50次运行)后,其运行时间变为2毫秒左右 在这种情况下,如果我使用多线程版本,我们能得到任何好处吗?如果没有,那么隐藏并行执行好处的开销是什么?启动线程的开销很可能远远超过任何加速。在windows上,对于如此快速的程序,您甚至无法可靠地测量执行时间 但当然,你必须问问自己,对于一个运行在2ms内的程序,你是否真的需要任何加速。Id取决于2ms是否太慢。这还取决于您是否希望同时运行这些任务。 为什么不使用执行器来运行任务,然后您可以根据需要添加线程。

我写了一个Java程序。对于小输入,在预热(前50次运行)后,其运行时间变为2毫秒左右


在这种情况下,如果我使用多线程版本,我们能得到任何好处吗?如果没有,那么隐藏并行执行好处的开销是什么?

启动线程的开销很可能远远超过任何加速。在windows上,对于如此快速的程序,您甚至无法可靠地测量执行时间


但当然,你必须问问自己,对于一个运行在2ms内的程序,你是否真的需要任何加速。

Id取决于2ms是否太慢。这还取决于您是否希望同时运行这些任务。
为什么不使用执行器来运行任务,然后您可以根据需要添加线程。

嗯,2ms至少可以在多个线程上进行拆分。不断地创建/运行/终止/连接线程是一种没有希望的设计。如果将工作发送给一组专用线程,或者将工作发送给池,那么这完全取决于所完成的工作和数据组织

如果有任何阻塞,或者CPU密集型的工作可以在2毫秒内有效地并行执行,那么您可以尝试一下。CPU密集型工作的关键问题是有多少数据以及如何组织数据。如果要处理的数据可以很容易地分割成好的、[一级缓存大小或更小的]块,那么您就成功了。如果没有,要做好失望的准备


当然,你可以试试看。

这里的短语“视情况而定”。您的申请是否不接受2毫秒?多线程的性能改进是否值得引入额外的复杂性?多线程不是提高性能的保证方法。您真的想将2ms计算拆分为多个线程吗?开销将是巨大的。“如果我使用多线程”用于什么?程序的性质是什么?“启动线程的开销很可能远远超过任何加速”……除非线程已经存在,即池线程或专用的“应用程序生命周期”线程。@Martin James:是的。我假设他的整个应用程序在2毫秒内运行。