国产99福利精品视频|杨幂精品国产福利在线|国精品午夜福利视频不卡|欧美精品黄网站在线播放|精品国产乱码久久久久久久|国产大片中文字幕在线观看|国产肥熟女视频一区二区三区|国产乱码无码视频一区二区三区

如何實現(xiàn)一個Java線程池?

來源:北大青鳥飛迅校區(qū)|發(fā)布時間:2013-04-23 16:04:48

  Java線程池就像數(shù)據(jù)庫連接池一樣,是一個對象池。我們在使用的時候需要不斷的學(xué)習(xí),因為所有的對象池都有一個共同的目的,那就是為了提高對象的使用率,從而達(dá)到提高程序效率的目的。

  比如對于Servlet,它被設(shè)計為多線程的(如果它是單線程的,你就可以想象,當(dāng)1000個人同時請求一個網(wǎng)頁時,在第一個人獲得請求結(jié)果之前,其它999個人都在郁悶地等待),如果為每個用戶的每一次請求都創(chuàng)建一個新的線程對象來運(yùn)行的話,系統(tǒng)就會在創(chuàng)建線程和銷毀線程上耗費(fèi)很大的開銷,大大降低系統(tǒng)的效率。因此,Servlet多線程機(jī)制背后有一個Java線程池在支持,線程池在初始化初期就創(chuàng)建了一定數(shù)量的線程對象,通過提高對這些對象的利用率,避免高頻率地創(chuàng)建對象,從而達(dá)到提高程序的效率的目的。

  下面實現(xiàn)一個最簡單的Java線程池,從中理解它的實現(xiàn)原理。為此我們定義了四個類,它們的用途及具體實現(xiàn)如下:

  Task(任務(wù)):這是個代表任務(wù)的抽象類,其中定義了一個deal()方法,繼承Task抽象類的子類需要實現(xiàn)這個方法,并把這個任務(wù)需要完成的具體工作在deal()方法編碼實現(xiàn)。Java線程池中的線程之所以被創(chuàng)建,就是為了執(zhí)行各種各樣數(shù)量繁多的任務(wù)的,為了方便線程對任務(wù)的處理,我們需要用Task抽象類來保證任務(wù)的具體工作統(tǒng)一放在deal()方法里來完成,這樣也使代碼更加規(guī)范。

  Task的定義如下:

  Java代碼

  1.public abstract class Task {

  2.public enum State {

  3./* 新建 */NEW, /* 執(zhí)行中 */RUNNING, /* 已完成 */FINISHED

  4.}

  5.// 任務(wù)狀態(tài)

  6.private State state = State.NEW;

  7.public void setState(State state) {

  8.this.state = state;

  9.}

  10.public State getState() {

  11.return state;

  12.}

  13.public abstract void deal();

  14.}

  15.public abstract class Task {

  16.public enum State {

  17./* 新建 */NEW, /* 執(zhí)行中 */RUNNING, /* 已完成 */FINISHED

  18.}

  19.// 任務(wù)狀態(tài)

  20.private State state = State.NEW;

  21.public void setState(State state) {

  22.this.state = state;

  23.}

  24.public State getState() {

  25.return state;

  26.}

  27.public abstract void deal();

  28.}

  以上就是對Java線程池的相關(guān)代碼介紹。

上一篇:如何更新和激活Java"遺留"系統(tǒng)?
下一篇:如何實現(xiàn)Java多線程間發(fā)信及守護(hù)線程?

熱門話題

招生熱線: 4008-0731-86 / 0731-82186801

學(xué)校地址: 長沙市天心區(qū)團(tuán)結(jié)路6號

Copyright © 2006 | 湖南大計信息科技有限公司 版權(quán)所有

湘ICP備14017520號-3

關(guān)注我們
在線咨詢
嘿,我來幫您!