完成Java線程

我看到這個(gè)問題被問了很多次绎谦。很抱歉再次問這個(gè)問題。我有個(gè)奇怪的問題显歧。

我有一個(gè)通過ExecutorService作為單獨(dú)的可運(yùn)行任務(wù)提交數(shù)千個(gè)作業(yè)的職務(wù)蒙挑。這是在一個(gè)簡單的for循環(huán)中完成的。在for循環(huán)的末尾颖系,我調(diào)用service.候機(jī)()嗅剖,然后是一個(gè)等待高潮。

由于要提交的線程數(shù)量很大嘁扼,所以線程一直掛起信粮,直到所有任務(wù)都提交為止。

有任何方法趁啸,這些線程可以優(yōu)雅地終止强缘,一旦它的執(zhí)行完成督惰?

您可以創(chuàng)建一個(gè)新的ThreadPoolExecuto不打電話java.util.concurrent.Executors :

int corePoolSize = 0;
    int maximumPoolSize = 64;
    int keepAliveTime = 5000;
    ExecutorService executorService =
            new ThreadPoolExecutor(corePoolSize, maximumPoolSize, keepAliveTime,
                    TimeUnit.MILLISECONDS, new SynchronousQueue<Runnable>());

在javadoc中:“如果池當(dāng)前有多個(gè)corePoolSize線程,那么如果多余的線程已經(jīng)空閑超過了持有AliveTime旅掂,那么多余的線程將被終止”

編輯:
下面是一個(gè)很小的例子赏胚,如果您在Eclipse調(diào)試環(huán)境中運(yùn)行這個(gè)示例,您應(yīng)該可以看到線程的來來去去:

import java.util.Random;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.SynchronousQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;

public class ExecutorTest {

    public static void main(String[] args) {

        ExecutorService executorService = new ThreadPoolExecutor(0, 64, 1000,
                        TimeUnit.MILLISECONDS, new SynchronousQueue<Runnable>());

        for (int i = 0; i <= 500; i ++) {

            try {
                Thread.sleep(new Random().nextInt(200));
            } catch (InterruptedException e) {
            }

            executorService.submit(new TestTask());
        }
    }

    public static class TestTask implements Runnable {
        public void run() {
            try {
                Thread.sleep(new Random().nextInt(1500));
            } catch (InterruptedException e) {
            }
        }
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末商虐,一起剝皮案震驚了整個(gè)濱河市觉阅,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌秘车,老刑警劉巖典勇,帶你破解...
    沈念sama閱讀 212,816評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異叮趴,居然都是意外死亡割笙,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評論 3 385
  • 文/潘曉璐 我一進(jìn)店門眯亦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來伤溉,“玉大人,你說我怎么就攤上這事妻率√富穑” “怎么了?”我有些...
    開封第一講書人閱讀 158,300評論 0 348
  • 文/不壞的土叔 我叫張陵舌涨,是天一觀的道長糯耍。 經(jīng)常有香客問我,道長囊嘉,這世上最難降的妖魔是什么温技? 我笑而不...
    開封第一講書人閱讀 56,780評論 1 285
  • 正文 為了忘掉前任,我火速辦了婚禮扭粱,結(jié)果婚禮上舵鳞,老公的妹妹穿的比我還像新娘。我一直安慰自己琢蛤,他們只是感情好蜓堕,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,890評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著博其,像睡著了一般套才。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上慕淡,一...
    開封第一講書人閱讀 50,084評論 1 291
  • 那天背伴,我揣著相機(jī)與錄音,去河邊找鬼。 笑死傻寂,一個(gè)胖子當(dāng)著我的面吹牛息尺,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播疾掰,決...
    沈念sama閱讀 39,151評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼搂誉,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了静檬?” 一聲冷哼從身側(cè)響起勒葱,我...
    開封第一講書人閱讀 37,912評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎巴柿,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體死遭,經(jīng)...
    沈念sama閱讀 44,355評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡广恢,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,666評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了呀潭。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片钉迷。...
    茶點(diǎn)故事閱讀 38,809評論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖钠署,靈堂內(nèi)的尸體忽然破棺而出糠聪,到底是詐尸還是另有隱情,我是刑警寧澤谐鼎,帶...
    沈念sama閱讀 34,504評論 4 334
  • 正文 年R本政府宣布舰蟆,位于F島的核電站,受9級特大地震影響狸棍,放射性物質(zhì)發(fā)生泄漏身害。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,150評論 3 317
  • 文/蒙蒙 一草戈、第九天 我趴在偏房一處隱蔽的房頂上張望塌鸯。 院中可真熱鬧,春花似錦唐片、人聲如沸丙猬。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽茧球。三九已至,卻和暖如春星持,著一層夾襖步出監(jiān)牢的瞬間袜腥,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留羹令,地道東北人鲤屡。 一個(gè)月前我還...
    沈念sama閱讀 46,628評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像福侈,于是被迫代替她去往敵國和親酒来。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,724評論 2 351

推薦閱讀更多精彩內(nèi)容

  • Java線程池使用說明 一簡介 線程的使用在java中占有極其重要的地位肪凛,在jdk1.4極其之前的jdk版本中堰汉,關(guān)...
    哥哥是歐巴Vitory閱讀 152評論 0 0
  • 一、線程池簡介 Java并發(fā)編程中伟墙,我們常常使用以下兩種方法來開啟一個(gè)新的線程來并發(fā)完成某些任務(wù): 寫一個(gè)Thre...
    邱simple閱讀 1,371評論 0 2
  • 1,為什么要用線程池,優(yōu)勢 (1)降低資源消耗翘鸭,通過重復(fù)利用已創(chuàng)建的線程降低線程創(chuàng)建和銷毀造成的消耗。 (2) 提...
    陳二狗想吃肉閱讀 946評論 0 1
  • Java線程池 一戳葵、Executor(執(zhí)行器)框架 ? 創(chuàng)建一個(gè)新線程是有一定代價(jià)的就乓,以為涉及與操作系統(tǒng)的交互...
    thorhill閱讀 1,545評論 4 23
  • 為什么使用線程池 當(dāng)我們在使用線程時(shí),如果每次需要一個(gè)線程時(shí)都去創(chuàng)建一個(gè)線程拱烁,這樣實(shí)現(xiàn)起來很簡單生蚁,但是會有一個(gè)問題...
    閩越布衣閱讀 4,281評論 10 45