不一定
看下面代码
public static void main(String[] args) throws InterruptedException {
test();
test2 ();
}
public static void test () throws InterruptedException {
long timeStart = System.currentTimeMillis();
int count = 10000;
Thread t = new Thread(new Runnable() {
@Override
public void run() {
int a = 0;
for (int i = 0; i < count; i++) {
a++;
}
}
});
t.start();
int b = 0;
for (int i = 0; i < count; i++) {
b++;
}
t.join();
System.out.println("time:" + (System.currentTimeMillis() - timeStart) + "==b:" + b);
}
public static void test2 () {
long timeStart = System.currentTimeMillis();
int count = 10000;
int a = 0;
for (int i = 0; i < count; i++) {
a++;
}
int b = 0;
for (int i = 0; i < count; i++) {
b++;
}
System.out.println("time2:" + (System.currentTimeMillis() - timeStart) + "==b:" + b);
}
结果(循环10000次):
time:1==b:10000
time2:0==b:10000
(循环100000次)
time:2==b:100000
time2:1==b:100000
(循环1000000次)
time:3==b:1000000
time2:3==b:1000000
(循环10000000次)
time:3==b:10000000
time2:4==b:10000000
当循环次数在十万左右时, 多线程要比串行执行慢,因为线程有创建和上下文切换的开销。
当循环在一百万次左右时,两者执行时间差不多
当循环在一千万以上,多线程就比串行执行快了。