线程在不同的硬件上
当我第一次了解Java线程时,我被告知,多线程并不是真实的。 也就是说,只有一个CPU,OS在线程之间进行上下文切换以模拟多线程。
现在,我们有i3,i5 i7,双核,core2dou等等......
因此,当我有一个Java程序使用10号线程池(例如)时,假设线程池已满,线程准备运行,多少个线程将在同一时间运行核心?
最多会有2个线程同时执行(2个核心),但还有更多的线程可能会被安排执行(等待cpu)
在开始时,Java有'绿色'线程,所以线程调度是在jvm中完成的。 但是由于很长一段时间Java拥有本地线程。 无论如何,如果你提供了足够的线程,Java可以利用你的所有内核。
PS:如果你的核心支持超线程,那么操作系统将会看到核心数量的两倍。 如果您的线程因内存读取等原因而停滞,所以另一个线程可以运行,这非常有用。 在家里我有一个4核Xeon机器,但启用了超线程技术后,我的操作系统将会看到8个内核。 但实际上只有4个线程可以同时运行。
链接地址: http://www.djcxy.com/p/36875.html上一篇: Threads on different Hardware
下一篇: Hardware threads (logical cores) on Hyper threaded CPUs + scheduler