<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    在路上

    路上有驚慌,路上有理想

      BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
      28 Posts :: 1 Stories :: 10 Comments :: 0 Trackbacks

    1.類介紹:
    Executor
    接口提供一種將任務(wù)提交與每個任務(wù)將如何運行的機制(包括線程使用的細節(jié)、調(diào)度等)分離開來的方法。
    它只有一個方法excute(Runnable command),你可以復(fù)寫此方法,讓Runnable同步或異步執(zhí)行
    ExecutorServiceExecutor的一個子接口,提供了管理線程的方法,可為跟蹤一個或多個異步任務(wù)執(zhí)行狀況而生成 Future 的方法。
    ThreadPoolExecutor是ExecutorService的一個實現(xiàn)類,它通常與Executors工廠一起使用。
    下面的方法取自Executors類
    public static ExecutorService newFixedThreadPool(int nThreads) {
    return new ThreadPoolExecutor(nThreads, nThreads,
    0L, TimeUnit.MILLISECONDS,
    new LinkedBlockingQueue<Runnable>());
    }
    這里面使用ThreadPoolExecutor創(chuàng)建一個線程數(shù)為nThreads的線程池。
    類似的工廠方法還有很多,可以查看JDK
    ExecutorService的常用方法:
    invokeAll 執(zhí)行所有任務(wù),全部執(zhí)行完畢后返回每個任務(wù)的結(jié)果(FutureList),包括每個任務(wù)的狀態(tài)
    invokeAny 與上面方法的區(qū)別是,只返回一個任務(wù)成功執(zhí)行結(jié)果Future
    submit 提交一個Task去執(zhí)行,并返回執(zhí)行結(jié)果
    awaitTermination 當執(zhí)行線程中斷、超時,或調(diào)用了shutdown方法后,阻塞直到所有的Task都執(zhí)行結(jié)束。
    shutdown 關(guān)閉所有執(zhí)行過的Task,并不再接收新線程
    isTerminated 如果所有Task都關(guān)閉則返回True,前提是調(diào)用過shutdown或shutdownNow
    2.使用示例:
    a.首先定義一個輔助類SystemConstant,大致方法如下:
    //初始化一個線程池
    public static ExecutorService getExecutor() {
    if(PROCESS_EXECUTOR == null || PROCESS_EXECUTOR.isTerminated()) {
    PROCESS_EXECUTOR = Executors.newFixedThreadPool(EXECUTOR_SIZE);
    }
    return PV_PROCESS_EXECUTOR;
    }
    //定義關(guān)閉方法
    public static void awaitTerminationExecutor(long timeout, TimeUnit unit) {
    getExecutor().shutdown();
    try {
    getExecutor().awaitTermination(timeout, unit);
    } catch (InterruptedException e) {
    e.printStackTrace();
    }
    }
    b.接下來是調(diào)用:
    try {
    SystemConstant.getExecutor().invokeAll(SystemUtils.toCallable(
    new SystemUtils.CallableHandle<IPvProcess>() {

    public void handle(Process process) throws Exception {
    process.processLogs(logs, statDate);
    }

    }, prepareProcesses), perOutOfTime, TimeUnit.HOURS);
    } catch (Exception e) {
    logger.error(e);
    }
    SystemConstant.awaitTerminationProgramExecutor(allOutOfTime, TimeUnit.HOURS);

    3. 類結(jié)構(gòu)圖

    java.util.concurrent
    Class ThreadPoolExecutor

    java.lang.Object
    extended by java.util.concurrent.AbstractExecutorService
    extended by java.util.concurrent.ThreadPoolExecutor
    All Implemented Interfaces:
    Executor, ExecutorService
    Direct Known Subclasses:
    ScheduledThreadPoolExecutor
    posted on 2010-08-31 21:37 阮步兵 閱讀(4881) 評論(0)  編輯  收藏 所屬分類: Java
    主站蜘蛛池模板: 91亚洲视频在线观看| 免费在线观看污网站| 亚洲一区精品中文字幕| 99精品视频免费| 亚洲男人的天堂www| 日本黄色动图免费在线观看| 老司机精品视频免费| 免费黄色一级毛片| 亚洲av日韩av永久在线观看| 99精品全国免费观看视频| 亚洲综合av一区二区三区不卡| 在线精品免费视频| 色噜噜的亚洲男人的天堂| 亚洲av区一区二区三| 国产成人无码精品久久久久免费| 1000部拍拍拍18勿入免费凤凰福利 | 免费毛片毛片网址| 亚洲精品动漫人成3d在线| 一级有奶水毛片免费看| 成人黄软件网18免费下载成人黄18免费视频| 亚洲欧洲在线播放| 黄色片在线免费观看| 含羞草国产亚洲精品岁国产精品 | 亚洲av日韩av天堂影片精品| 日韩免费无码一区二区三区| 亚洲日本乱码一区二区在线二产线 | 成人毛片免费网站| 日韩在线观看视频免费| 久久99九九国产免费看小说| 亚洲午夜精品一区二区麻豆 | 亚洲国产精品无码专区| 1000部免费啪啪十八未年禁止观看 | 亚洲视频免费在线看| 亚洲AV无码一区二区三区性色| 亚洲精品无码av天堂| 99re在线精品视频免费| 亚洲精品久久无码| 国产亚洲综合成人91精品| 免费无码肉片在线观看| 黄床大片免费30分钟国产精品| 亚洲色欲或者高潮影院|