创建线程池

 线程池的作用:

线程池作用就是限制系统中执行线程的数量。
根据系统的环境情况,可以自动或手动设置线程数量,达到运行的最佳效果;少了浪费了系统资源,多了造成系统拥挤效率不高。用线程池控制线程数量,其他线程排队等候。一个任务执行完毕,再从队列的中取最前面的任务开始执行。若队列中没有等待进程,线程池的这一资源处于等待。当一个新任务需要运行时,如果线程池中有等待的工作线程,就可以开始运行了;否则进入等待队列。

 

为什么要用线程池:

  1. 减少了创建和销毁线程的次数,每个工作线程都可以被重复利用,可执行多个任务
  2. 可以根据系统的承受能力,调整线程池中工作线线程的数目,防止因为因为消耗过多的内存,而把服务器累趴下(每个线程需要大约1MB内存,线程开的越多,消耗的内存也就越大,最后死机)

线程池类

  1. package com.tdt.test; 
  2.  
  3. import com.tdt.impl.ls.ThreadPool; 
  4.  
  5. public class ThreadPoolTest { 
  6.      
  7.     public static void main(String[] args) throws InterruptedException { 
  8.         ThreadPool threadPool = new ThreadPool(3); //创建一个有个3工作线程的线程池 
  9.         Thread.sleep(500); //休眠500毫秒,以便让线程池中的工作线程全部运行 
  10.         //运行任务 
  11.         for (int i = 0; i <=5 ; i++) { //创建6个任务 
  12.             threadPool.execute(createTask(i)); 
  13.         } 
  14.         threadPool.waitFinish(); //等待所有任务执行完毕 
  15.         threadPool.closePool(); //关闭线程池 
  16.  
  17.     } 
  18.  
  19.     private static Runnable createTask(final int taskID) { 
  20.         return new Runnable() { 
  21.             public void run() { 
  22.             //  System.out.println("Task" + taskID + "开始"); 
  23.                 System.out.println("Hello world"); 
  24.             //  System.out.println("Task" + taskID + "结束"); 
  25.             } 
  26.         }; 
  27.     } 

结果;

 

  1. 工作线程0等待任务... 
  2. 工作线程1等待任务... 
  3. 工作线程2等待任务... 
  4.  
  5. 工作线程0开始执行任务... 
  6. Hello world 
  7. 工作线程0等待任务... 
  8.  
  9. 工作线程1开始执行任务... 
  10. Hello world 
  11. 工作线程1等待任务... 
  12.  
  13. 工作线程2开始执行任务... 
  14. Hello world 
  15. 工作线程2等待任务... 
  16.  
  17. 工作线程0开始执行任务... 
  18. Hello world 
  19. 工作线程0等待任务... 
  20.  
  21. 工作线程1开始执行任务... 
  22. Hello world 
  23. 工作线程1等待任务... 
  24.  
  25. 工作线程2开始执行任务... 
  26. Hello world 
  27. 工作线程2等待任务... 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章