Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.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 - Fatal编程技术网

java线程多线程

java线程多线程,java,multithreading,Java,Multithreading,在java中,在java中为一个任务添加多个线程是否有助于更快地执行该任务 目前我的程序中使用了主线程,但速度很慢。我目前的测量值是每秒500个进程,但进程总数超过10亿个。如何使程序运行得更快 在java中,在java中为一个任务添加多个线程是否有助于更快地执行该任务 这完全取决于你在做什么。如果您在独立的数据块上执行任务,在检索或存储结果方面没有瓶颈,并且假设您在一台有多个处理器的机器上,那么是的,使用更多线程可能会有所帮助 然而,它有各种各样的方式无法帮助: 如果您正在从慢速资源中读取输

在java中,在java中为一个任务添加多个线程是否有助于更快地执行该任务

目前我的程序中使用了主线程,但速度很慢。我目前的测量值是每秒500个进程,但进程总数超过10亿个。如何使程序运行得更快

在java中,在java中为一个任务添加多个线程是否有助于更快地执行该任务

这完全取决于你在做什么。如果您在独立的数据块上执行任务,在检索或存储结果方面没有瓶颈,并且假设您在一台有多个处理器的机器上,那么是的,使用更多线程可能会有所帮助

然而,它有各种各样的方式无法帮助:

  • 如果您正在从慢速资源中读取输入数据,您可能正在以尽可能快的速度处理它
  • 如果您正在将结果写入速度较慢的资源,那么您可能会尽可能快地处理它
  • 如果一个任务依赖于另一个任务的结果,您可能无法获得任何并行化
  • 如果您只有一个CPU核心,并且任务已经受到CPU限制,那么添加更多线程将没有帮助
在某些情况下,线程化可能会有所帮助,但并不像CPU受限,并且有大量备用内核那样重要。您需要找出当前的瓶颈所在

请注意,在最好的情况下,您只会得到与您拥有的内核数量成比例的加速。所以,如果你有16个内核(不太可能但可行)和完美的并行化,那么如果一个内核每秒可以处理500个项目,而你有10亿个项目,那么处理所有事情仍然需要将近35个小时

几乎可以肯定的是,多线程代码将比单线程代码更复杂。尝试使用高级抽象(例如
java.util.concurrent
中的抽象),而不是低级抽象(例如
java.lang.Thread
),使事情更简单

在java中,在java中为一个任务添加多个线程是否有助于更快地执行该任务

这完全取决于你在做什么。如果你在独立的数据块上执行任务,在检索或存储结果方面没有瓶颈,并且假设你在一台有多个处理器的机器上,那么是的,使用更多的线程可能会有所帮助

然而,它有各种各样的方式无法帮助:

  • 如果您正在从慢速资源中读取输入数据,您可能正在以尽可能快的速度处理它
  • 如果您正在将结果写入速度较慢的资源,那么您可能会尽可能快地处理它
  • 如果一个任务依赖于另一个任务的结果,您可能无法获得任何并行化
  • 如果您只有一个CPU核心,并且任务已经受到CPU限制,那么添加更多线程将没有帮助
在某些情况下,线程化可能会有所帮助,但这并不像CPU受限和有大量备用内核那样重要。您需要找出当前的瓶颈所在

请注意,在最好的情况下,你只会得到与你拥有的内核数量成比例的加速。因此,如果你有16个内核(不太可能但可行)和完美的并行化,那么如果一个内核每秒可以处理500个项目,而你有10亿个项目,那么处理所有事情仍然需要近35个小时


几乎可以肯定的是,多线程代码比单线程代码更复杂。尝试使用高级抽象(例如
java.util.concurrent
中的抽象,而不是低级抽象(例如
java.lang.Thread
)使事情变得更简单。

当你做蛋糕时,加上100个人一起做会更快吗?你的主线程在做什么?你需要提供更多关于所做工作的细节。例如,如果你的工作正在读取一个大文件,那么并行化会使事情变得更糟。这取决于你的任务做什么-如果它们主要是CPU如果瓶颈是从一个文件中读取数据,那么添加线程将有所帮助。看看这条经验法则,你会有一个想法:@Adrian Shum:很好的一条..双向工作。我正在处理一个文件,在制作蛋糕时,在文件上读写,添加100个人一起制作会更快吗?你的主线程在做什么g?您需要提供更多关于所完成工作的详细信息。例如,如果您的工作正在读取一个大文件,那么并行化将使情况变得更糟。这取决于您的任务所做的工作—如果它们主要是CPU密集型的,那么添加线程将有所帮助。如果瓶颈是从文件读取数据,则不会。请参阅以下经验法则以了解情况:@Adrian Shum:good一号..双管齐下。我在处理文件,在文件上读写