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