首先,启动若干个线程,各线程执行若干时间的简单程序,在线程执行结束以后,等待若干时间后,
使用单线程执行这个简单程序,在windows系统下,打开任务管理器的性能标签,根据执行期内的性能
占用情况分析线程与多核处理器下的性能分解的关系。这个测试分别用10线程和100线程进行了测试。
package com.icefox.test.mulcore;
import java.util.Date;
public class MulCoreTest {
private int continueSecond; // 线程持续时间,默认20秒
public MulCoreTest(){
continueSecond=20;
}
public MulCoreTest(int continueSecond){
this.continueSecond = continueSecond;
}
public int getContinueSecond(){
return this.continueSecond;
}
/**
* 线程测试方法,先执行指定时间的多线程,
* 再执行指定时间的单线程,
* 查看资源管理器,证明线程与cpu核心的关系
* @throws InterruptedException
*/
public void testThread() throws InterruptedException{
/**
* 多线程执行
*/
System.out.println("Mul Thread run");
for(int i=0;i<100;i++){
new CustThread().start();
}
/**
* 休息30秒
*/
Thread.sleep((this.continueSecond+30)*1000);
/**
* 单线程执行
*/
System.out.println("Single Thread run");
testSingleThread();
}
/**
* @param args
* @throws InterruptedException
*/
public static void main(String[] args) throws InterruptedException {
// TODO Auto-generated method stub
MulCoreTest mul = new MulCoreTest();
mul.testThread();
}
/**
* 单线程测试
*
*/
public void testSingleThread(){
Date startTime = new Date();
while(true){
System.out.println("Single Thread");
Date nowTime = new Date();
if((nowTime.getTime()-startTime.getTime())/1000>continueSecond){
break;
}
}
}
}
|