public class Test {
public static void main(String[] args) {
long start=System.currentTimeMillis();
for(int i=0;i<10;i++) { //main方法里启动10个线程,每个线程调动是十万次
new Thread(new Runnable() {
public void run()
{
for(int i=0;i<100000;i++)
{
Object o=Design.getInstance();
}
}
}).start();
}
long end=System.currentTimeMillis();
System.out.println("总耗时:"+(end-start));//算的是main线程结束的时间,可能main线程结束时,其他线程还在运行
}
The correct way to calculate the time:
public class Test {
public static void main(String[] args) {
long start=System.currentTimeMillis();
int threadnum=10;
final CountDownLatch countDownLacth =new CountDownLatch(threadnum);
for(int i=0;i<10;i++) { //main方法里启动10个线程,每个线程调动是十万次
new Thread(new Runnable() {
public void run()
{
for(int i=0;i<100000;i++)
{
Object o=Design.getInstance();
}
countDownLatch.countDown(); //计数器减一,会报错,因为内部类不能使用外部类的局部变量,所以外部类局部变量要加上final变成常量
}
}).start();
}
countDownLatch.await();// 让main线程等待其他线程执行完,内部其实是一个循环,等待计数器减为0
long end=System.currentTimeMillis();
System.out.println("总耗时:"+(end-start));
}
}