Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.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 我如何知道/感觉到多线程对我的程序有帮助_Java_Multithreading_Performance - Fatal编程技术网

Java 我如何知道/感觉到多线程对我的程序有帮助

Java 我如何知道/感觉到多线程对我的程序有帮助,java,multithreading,performance,Java,Multithreading,Performance,我有一个大的单线程java程序,它需要很长时间才能输出结果。我正在考虑让它并发,但这让我想:并发对我的应用程序有帮助吗?这真的有用吗 因此,我在这里问: 我应该(在我的程序中)查找哪些属性,以便 多线程/并发是一条出路 这有什么规则吗 在应用程序中找到您认为可以同时执行的任务,然后通过多个线程执行这些任务。对此的答案非常主观。如果您需要以同步方式处理输入,那么并发将不适用。但是,如果您有一个一次为多个请求提供服务的流程,那么这将是一个很好的应用程序 例如,ServletAPI是多线程的,因为它具

我有一个大的单线程java程序,它需要很长时间才能输出结果。我正在考虑让它并发,但这让我想:并发对我的应用程序有帮助吗?这真的有用吗

因此,我在这里问:

我应该(在我的程序中)查找哪些属性,以便 多线程/并发是一条出路


这有什么规则吗

在应用程序中找到您认为可以同时执行的任务,然后通过多个线程执行这些任务。

对此的答案非常主观。如果您需要以同步方式处理输入,那么并发将不适用。但是,如果您有一个一次为多个请求提供服务的流程,那么这将是一个很好的应用程序

例如,ServletAPI是多线程的,因为它具有高度并发的特性——它必须并行地为许多独立的请求提供服务。如果您有一个与主应用程序线程异步运行的循环进程,例如每5分钟轮询一次新数据的进程,这也是一个很好的用途。然而,如果它是一个用户启动的进程,应该阻塞直到它完成,那么产生一个单独的线程就没有任何价值

与其问“我应该实现并发吗?”,不如问“这将如何从并发中受益?”您可以将并发添加到几乎任何您想要的内容中,但诀窍在于能够根据具体情况确定异步/并发运行任务是否有任何好处。

祝您好运

并发通常有助于提高算法完成的速度,前提是算法本身必须适用于多线程

对于多线程来说是可行的,我的意思是,算法的某些部分应该能够分解为独立的部分,而不依赖于顺序过程的结果。例如,如果您有一个循环,它每次运行时都会产生一些结果,但不需要以前的迭代结果,那么您可以创建多个线程,并将每个线程运行一次,而不是一个循环。这将提高算法完成的速度


有效性的最佳衡量标准是完成时间。

当您的程序可以分解为多个相互独立的并行可执行任务时,应使用多线程。 比如说,

int main() {

for (i=0;i<5;i++)
   fprintf("this is for task1")  // consider this function is writing data to file for task1

for (i=0;i<5;i++)
   fprintf("this is for task2")  // consider this function is writing data to file for task2

return 0;
}
intmain(){

对于(i=0;我从另一个角度探讨这个问题。概述你的应用程序设计、代码和数据,这样我们就可以更容易地判断一些额外的线程是否以及在哪里可能是有利的。乞讨很可能不会有帮助。写出好的答案,他们就会得到选票。@Fildor否决的原因?答案不符合标准,但没有错。我没有否决.但我猜不管是谁做的,都是为了乞求选票。
for (i=0;i<5;i++) {
   fprintf("this is for task1")
   fprintf("this is for task2")  
}