我可以制作多少个线程是否有限制

时间:2012-07-27 12:00:30

标签: java multithreading

好的,所以我用标记了这个问题,因为我主要是考虑它,因为那是我目前正在编写的语言。然而,这在编程领域同样如此。

我的问题是:处理器可以处理多少线程是否有限制,而且我的应用程序最大限度地限制此限制的可能性是多少?如果我做了会怎么样?

我对线程并不是很了解 - 我只知道它们可以让你一次执行两个进程(这可能不是正确的术语)。最初,我认为单核处理器不允许多线程,但后来常识开始了,我想到了在Windows和东西的情况下这是不可能的。但现在我想知道,单核处理器和多核处理器有什么区别/多核处理器允许什么?

最简单的解释可能会非常感激。提前致谢

2 个答案:

答案 0 :(得分:4)

处理器通常可以一次运行一个线程。但是,它可以处理。当您运行多个进程时,您的处理器可以非常快速地在它们之间切换,从而为每个进程分配处理器的时间。这给出了并发的错觉,但实际上所有事情都是串行发生的。

对于可以运行的线程数没有硬性限制,但是当处理器在线程之间切换时,开销。如果您正在使用GUI构建应用程序,最好为长时间运行的任务生成单独的线程,以便GUI可以保持响应。如果您希望在具有多个处理器或其他允许真正并发的解决方案的计算机上运行,​​您可以尝试通过在单独的线程中运行来利用它,但它确实会使您的问题变得更加复杂并且可能导致难以实现的错误追查。

现在大多数计算机都是多核的,并且实际上可以同时运行多个线程。事实上,更多的并发性,而不是更强大的单个处理器,可能是未来计算机的发展方式。能够利用 的重要性,但这很难。如果您没有特定的理由让您的应用程序多线程,我建议您避免使用它,直到您觉得这样做为止。

答案 1 :(得分:2)

  

处理器可以处理的线程数有限制,

它只能运行一两个(超线程)。一些sparc处理器最多可以处理16个。

在考虑创建大量线程时值得记住这一点,因为创建更多线程可能效率低(特别是如果进程是cpu绑定的话)

  

我只知道它们可以让你一次执行两个进程

“进程”包含一个或多个线程。即“过程”具有特定含义。

  

单核处理器和多核处理器之间有什么区别/多核处理器允许什么

多个内核可以同时运行多个线程。单核可以模拟运行多个线程(足够快,你不会注意到)

如果您有足够的线程来使用所有核心,您可以获得吞吐量的线性提升。例如如果你可以使用一个核心每秒处理10,000个请求,那么你可以用8个核心每秒处理80,000个请求。