不同硬件上的线程

时间:2014-01-12 13:27:37

标签: java multithreading

当我第一次了解Java线程时,我被告知,多线程并不真实。 也就是说,有一个CPU,OS在线程之间进行上下文切换以模拟多线程。

现在,我们有i3,i5 i7,双核,core2dou等......

所以,当我有一个使用大小为10的线程池的Java程序时(例如), 假设线程池已满,线程已准备好运行, 在具有2个内核的i5计算机中,同一时间(实际)将运行多少个线程?

2 个答案:

答案 0 :(得分:1)

最多会同时执行2个线程(2个核心),但可能会安排更多线程执行(等待cpu)

答案 1 :(得分:1)

一开始Java有'绿色'线程,所以线程调度是在jvm中完成的。但是由于很长一段时间Java都有本机线程。在任何情况下,如果您提供足够的线程,Java可以使用您的所有核心。

PS: 如果您的核心支持超线程,那么操作系统将看到核心数量的两倍。如果你的线程被停顿,例如,这很有用。内存读取,以便另一个线程可以运行。在家里我有一个4核Xeon机器,但启用了超线程,我的操作系统将看到8个核心。但实际上只有4个线程可以同时运行。