Java線程池就像數據庫連接池一樣是一個對象池我們在使用的時候需要不斷的學習這樣才能不斷的適應相關語言技術的變化所有的對象池都有一個共同的目的那就是為了提高對象的使用率從而達到提高程序效率的目的
比如對於Servlet它被設計為多線程的(如果它是單線程的你就可以想象當個人同時請求一個網頁時在第一個人獲得請求結果之前其它個人都在郁悶地等待)如果為每個用戶的每一次請求都創建一個新的線程對象來運行的話系統就會在創建線程和銷毀線程上耗費很大的開銷大大降低系統的效率因此Servlet多線程機制背後有一個Java線程池在支持線程池在初始化初期就創建了一定數量的線程對象通過提高對這些對象的利用率避免高頻率地創建對象從而達到提高程序的效率的目的
下面實現一個最簡單的Java線程池從中理解它的實現原理為此我們定義了四個類它們的用途及具體實現如下
Task(任務)這是個代表任務的抽象類其中定義了一個deal()方法繼承Task抽象類的子類需要實現這個方法並把這個任務需要完成的具體工作在deal()方法編碼實現Java線程池中的線程之所以被創建就是為了執行各種各樣數量繁多的任務的為了方便線程對任務的處理我們需要用Task抽象類來保證任務的具體工作統一放在deal()方法裡來完成這樣也使代碼更加規范
Task的定義如下
Java代碼
public abstract class Task {
public enum State {
/* 新建 */NEW /* 執行中 */RUNNING /* 已完成 */FINISHED
}
// 任務狀態
private State state = StateNEW;
public void setState(State state) {
thisstate = state;
}
public State getState() {
return state;
}
public abstract void deal();
}
public abstract class Task {
public enum State {
/* 新建 */NEW /* 執行中 */RUNNING /* 已完成 */FINISHED
}
// 任務狀態
private State state = StateNEW;
public void setState(State state) {
thisstate = state;
}
public State getState() {
return state;
}
public abstract void deal();
}
以上就是對Java線程池的相關代碼介紹
From:http://tw.wingwit.com/Article/program/Java/gj/201311/27369.html