作者:雨后彩虹fen | 来源:互联网 | 2023-05-19 05:32
packagecom.itmyhome.test;***测试并发执行和串行执行的效率*@authorTracyMcGrady**publicclassConcurrencyT
package com.itmyhome.test;
/**
* 测试并发执行和串行执行的效率
* @author TracyMcGrady
*
*/
public class ConcurrencyTest {
private static final long count=100000000;
public static void main(String []args){
try {
concurrency();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
serial();
}
//并发执行
private static void concurrency() throws InterruptedException{
long start=System.currentTimeMillis();
Thread thread=new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
int a=0;
for(long i=0;i a+=5;
//System.out.println("a="+a);
}
}
});
thread.start();
int b=0;
for(long i=0;i b--;
//System.out.println("b="+b);
}
//在一个线程中调用thread.join(),将等待thread执行完后才继续本线程。
thread.join();
long time=System.currentTimeMillis()-start;
System.out.println("concurrency:"+time+"ms,b="+b);
}
//串行执行
private static void serial(){
long start=System.currentTimeMillis();
int a=0;
for(long i=0;i a+=5;
}
int b=0;
for(long i=0;i b--;
}
long time=System.currentTimeMillis()-start;
System.out.println("Serial:"+time+"ms,b="+b);
}
}
统计结果如下:
从上表可以看出,当并发执行累加操作不超过1千万次时(也取决于你的机器配置),速度会比串行操作更慢。那么为什么并发执行速度会比串行慢呢?这是因为线程有创建
和上下文的开销。