我正在学习Java中的多线程和并发。阅读有关堆栈溢出和在线的大量文章。但未清除。所以,请忍受我。
首先我的疑问是,有人说可以同时运行的线程数等于(n =处理器内核数)是否正确?我真的不确定这句话。
但是我已经读到我们可以在JVM中创建所需的尽可能多的线程,这仅取决于我们分配给JVM的内存。正确吗?
我们应该如何确定一个Java程序并行运行的线程数?它与处理器核心相关吗?
答案 0 :(得分:2)
可以并行运行的线程数等于(n = 处理器内核)
是的,这是真的。
但是我读到我们可以在JVM中创建所需的尽可能多的线程, 仅取决于我们分配给JVM的内存。正确吗?
理论上是。您可以在JVM中创建任意数量的Threads
,直到获得OutOfMemoryError
。但是创建Threads
是一项昂贵的任务,因此,最佳实践是考虑使用共享线程池。这可以使用ExecutorService
框架来实现。