我对使用多核处理器的Java中的多线程有疑问。据我所知,当有单核处理器时,多线程工作,因为每个线程都会从cpu时间开始运行,现在我们有多核处理器,正如我所想,JVM也会更新以获得这个优势,赢得了是吗?或者它不是,这就是为什么在Java 7中引入fork / join框架进行多处理的原因?
非常感谢你。
答案 0 :(得分:1)
是的,当有一个核心处理器时,每个线程都会获得一小段CPU运行时间。
是的,当有多个核心时,它们将在它们之间分配。但是如果线程多于核心(包括来自计算机中运行的其他进程/程序的线程),那么它们也只能得到一块CPU。
如果您有单线程,并且您想要生成更多线程以便每个线程都可以执行部分工作,那么稍后您将必须加入它们的结果。执行此分支(从一个到多个线程的数据)和连接(从多个线程到一个的数据)比起初看起来更复杂,并且帮助它是在Java 7中引入fork / join的原因。