package com.ex;java
import java.util.concurrent.Executors;
import java.util.concurrent.ThreadPoolExecutor;dom
public class Server {ide
private ThreadPoolExecutor executor; public ThreadPoolExecutor getExecutor(){ return this.executor; } public Server(){
// executor=(ThreadPoolExecutor) Executors.newCachedThreadPool();// cache線程池在真正有任務的時候才初始化,隨着任務變化而變化this
executor=(ThreadPoolExecutor) Executors.newFixedThreadPool(10);//固定任務的線程池 System.out.println("總共線程池------------------------"+executor.getPoolSize()); System.out.println("活動的線程池數量---------------------"+executor.getActiveCount()); } public void excuteTask(Task task){ executor.execute(task); System.out.println("一共得線程池"+executor.getPoolSize()); System.out.println("活動的線程池數量,即正在處理任務的線程數量"+executor.getActiveCount()); } public static void main(String[] args) { Server server=new Server(); for(int i=0;i<100;i++){ Task task=new Task("線程id"+i); server.excuteTask(task); } /**
主線程不斷詢問線程組是否執行完畢
*/線程
while(true){
if(server.getExecutor().getCompletedTaskCount()==100){code
System.out.println("總共線程池------------------------"+server.getExecutor().getPoolSize()); System.out.println("活動的線程池數量---------------------"+server.getExecutor().getActiveCount()); server.getExecutor().shutdown(); break;
}server
} }
}get
package com.ex;io
import java.util.Date;class
public class Task implements Runnable{
private String name; private Date date; public Task(String name){ this.date=new Date(); this.name=name; } @Override public void run() { try { System.out.println(this.name+"----開始執行任務"); Thread.sleep((long) (Math.random()*1000)); System.out.println(this.name+"----結束執行任務"); } catch (InterruptedException e) { e.printStackTrace(); } }
}