線程池的抽象接口
public interface SelfThreadPool {// 提交任務到線程池void execute(Runnable runnable);//關閉void shutdown();//獲取線程池初始化的大小int getInitSize();//獲取線程池最大的大小int getMaxSize();// 獲取線程池核心線程數量,int getCoreSize();// 獲取活躍線程數量, 活躍線程是正在執行任務的線程數量int getActiveCount();//獲取線程池緩存隊列大小int getQueueSize();//查看線程是否被銷毀boolean isShutdown();
}
任務隊列的抽象接口
//線程池的任務隊列
public interface RunnableQueue {// 提交任務到緩存隊列void offer(Runnable runnable);//取出任務Runnable take();//獲取隊列中線程數量int size();
}
自定義的異常,后面用于拒絕策略
//自定義異常
public class RunnableDenyException extends RuntimeException{public RunnableDenyException(String msg){super(msg);}
}
首先參數中,
初始線程數,核心線程數,最大線程數。
為什么要設置初始線程呢?
- 減少線程的創建開銷
- 應對瞬時任務的負載
- 平滑適應任務:不會讓突然增加大量線程。