如果我的CPU中的每个核心可以一次处理一个线程,那么如何使用16个或更多线程

时间:2015-06-25 23:24:10

标签: java multithreading

我正在研究Java中的一些程序,而我正在进入真正的多线程。我正在玩线程数,并意识到使用20个线程比8个线程更快,这是我拥有的物理+虚拟核心数。

如果我的处理器中的每个核心一次只能处理一个线程,为什么使用20个线程比使用8个线程更快?

1 个答案:

答案 0 :(得分:6)

发明多处理和多线程的最初原因与多核无关。当时,有一个核心。但是,程序由I / O操作和计算的组合组成。当单线程程序启动I / O操作时,它会阻塞(相对)大量的时间,并且在那段时间内CPU处于空闲状态。但是,如果第二个线程可用,并且该线程未在I / O操作中被阻塞,则可以调度此线程并使用CPU。

总结一下:多线程有助于将线程的I / O重叠与其他线程的计算,从而最大化CPU利用率(无论是否有一个或多个)