lqxue

          常用鏈接

          統(tǒng)計(jì)

          book

          tools

          最新評(píng)論

          java 1.5 捕獲線程異常

          Executor 提供了管理終止的方法,以及可為跟蹤一個(gè)或多個(gè)異步任務(wù)執(zhí)行狀況而生成 Future 的方法。

          可以關(guān)閉 ExecutorService,這將導(dǎo)致其停止接受新任務(wù)。關(guān)閉后,執(zhí)行程序?qū)⒆詈蠼K止,這時(shí)沒有任務(wù)在執(zhí)行,也沒有任務(wù)在等待執(zhí)行,并且無法提交新任務(wù)。

          通過創(chuàng)建并返回一個(gè)可用于取消執(zhí)行和/或等待完成的 Future,方法 submit 擴(kuò)展了基本方法 Executor.execute(java.lang.Runnable)。方法 invokeAnyinvokeAll 是批量執(zhí)行的最常用形式,它們執(zhí)行任務(wù)集合,然后等待至少一個(gè),或全部任務(wù)完成(可使用 ExecutorCompletionService 類來編寫這些方法的自定義變體)。

          Executors 類提供了用于此包中所提供的執(zhí)行程序服務(wù)的工廠方法。

          用法示例

          下面給出了一個(gè)網(wǎng)絡(luò)服務(wù)的簡(jiǎn)單結(jié)構(gòu),這里線程池中的線程作為傳入的請(qǐng)求。它使用了預(yù)先配置的 Executors.newFixedThreadPool(int) 工廠方法:
           class NetworkService {
          private final ServerSocket serverSocket;
          private final ExecutorService pool;

          public NetworkService(int port, int poolSize) throws IOException {
          serverSocket = new ServerSocket(port);
          pool = Executors.newFixedThreadPool(poolSize);
          }

          public void serve() {
          try {
          for (;;) {
          pool.execute(new Handler(serverSocket.accept()));
          }
          } catch (IOException ex) {
          pool.shutdown();
          }
          }
          }

          class Handler implements Runnable {
          private final Socket socket;
          Handler(Socket socket) { this.socket = socket; }
          public void run() {
          // read and service request
          }
          }

          posted on 2008-11-05 15:46 lqx 閱讀(484) 評(píng)論(0)  編輯  收藏 所屬分類: java

          主站蜘蛛池模板: 涟源市| 库车县| 安义县| 内黄县| 新密市| 馆陶县| 连山| 五大连池市| 墨脱县| 阜城县| 沿河| 巍山| 防城港市| 盐池县| 临武县| 绥芬河市| 饶阳县| 莱西市| 广德县| 内丘县| 吉首市| 汉沽区| 梅州市| 金山区| 惠州市| 乐至县| 民和| 峨山| 桦南县| 砀山县| 卫辉市| 洞口县| 嵩明县| 水富县| 广汉市| 漯河市| 黄浦区| 文水县| 吉木乃县| 三河市| 灵台县|