使用线程池,比用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");
    }
}