例如,在 Java Concurrency in Practice 中,我读过“只有一个线程的程序一次最多可以在一个处理器上运行”。
但是,如果我在我的 2.5 GHz Intel Core 2 Duo Macbook Pro 上运行单线程 Java 类,我可以看到(在 Activity Monitor 中)两个内核的 CPU 使用率从接近 0 上升到 60% 左右。
mac OS 是否以某种方式将我的线程从一个内核切换到另一个内核,如果是,为什么?
谢谢!这是代码..
public class PrimeCalculator {
public static void findPrimes (int start, int end){
int countPrimes = 0;
for (int i=start; i<end; i++){
if (i % 1000000 == 0){
System.out.println("Did a million..");
}
boolean found = true;
for (int check = 2; check <= Math.sqrt(i); check++){
if (i % check == 0){
found = false;
break;
}
}
if (found == true){
//System.out.println(i);
countPrimes++;
}
}
System.out.println("I counted "+countPrimes+" primes");
}
public static void main(String[] args){
findPrimes(0,100000000);
}
}