我正在研究Java中的一些程序,而我正在进入真正的多线程。我正在玩线程数,并意识到使用20个线程比8个线程更快,这是我拥有的物理+虚拟核心数。
如果我的处理器中的每个核心一次只能处理一个线程,为什么使用20个线程比使用8个线程更快?
答案 0 :(得分:6)
发明多处理和多线程的最初原因与多核无关。当时,有一个核心。但是,程序由I / O操作和计算的组合组成。当单线程程序启动I / O操作时,它会阻塞(相对)大量的时间,并且在那段时间内CPU处于空闲状态。但是,如果第二个线程可用,并且该线程未在I / O操作中被阻塞,则可以调度此线程并使用CPU。
总结一下:多线程有助于将线程的I / O重叠与其他线程的计算,从而最大化CPU利用率(无论是否有一个或多个)