使用线程池,比用new创建大量对象更加省时省空间,效率更高。
使用java.util.concurrent中的ExectorService来创建线程池。
/**
* 在这里给出对类 TempThread 的描述。
*
* @作者(你的名字)
* @版本(一个版本号或者一个日期)
*/
public class TempThread implements Runnable
{
private int id=0;
@Override
public void run(){
id++;
}
}
/**
* 在这里给出对类 ThreadPoolTest 的描述。
*
* @作者(你的名字)
* @版本(一个版本号或者一个日期)
*/
import java.util.concurrent.*;
//ExecutorService是Java中对线程池定义的一个接口,
//它java.util.concurrent包中,在这个接口中定义了和后台任务执行相关的方法
public class ThreadPoolTest
{
public static void main(String[]args){
Runtime run=Runtime.getRuntime();
run.gc(); //create垃圾回收器
long freeMemory=run.freeMemory(); //获得虚拟机空闲内存
long currentTime=System.currentTimeMillis(); //当前虚拟机时间
for(int i=0;i<1000;i++){
new Thread(new TempThread()).start();//独立运行1000个线程
}
System.out.println("独立运行1000个线程memory:"+(freeMemory-run.freeMemory()));
//最初空闲内存-当前空闲内存=线程占用内存
System.out.println("独立运行1000个线程time:"+(System.currentTimeMillis()-currentTime)+"ms");
run.gc();//run垃圾回收器
freeMemory=run.freeMemory();
currentTime=System.currentTimeMillis();
ExecutorService executorService=Executors.newFixedThreadPool(2);//线程池
for(int i=0;i<1000;i++){
executorService.submit(new TempThread());
}
System.out.println("use thread pool运行1000个线程memory:"+(freeMemory-run.freeMemory()));
System.out.println("use thread pool运行1000个线程time:"+(System.currentTimeMillis()-currentTime)+"ms");
}
}
浙公网安备 33010602011771号