【发布时间】:2016-08-30 08:43:00
【问题描述】:
我试图了解 java 线程如何与 CPU 内核一起工作。我有一个 4 核 CPU,当我尝试运行以下代码时,执行时间很有趣。为什么它不能用多个线程加速?我做错了吗?
availableProcessors() 顺便返回 4。
以下代码耗时近 27 秒;
Runnable runnable = new Runnable() {
@Override
public void run() {
int x = 0;
while(x < 10000000){
System.out.println(x);
x++;
}
}
};
Thread t1 = new Thread(runnable);
t1.start();
当我使用多个线程时,需要 33 秒;
Runnable runnable = new Runnable() {
@Override
public void run() {
int x = 0;
while(x < 5000000){
System.out.println(x);
x++;
}
}
};
Runnable runnable2 = new Runnable() {
@Override
public void run() {
int x = 5000000;
while(x < 10000000){
System.out.println(x);
x++;
}
}
};
Thread t1 = new Thread(runnable);
t1.start();
Thread t2 = new Thread(runnable2);
t2.start();
【问题讨论】:
标签: java multithreading