lqxue

          常用鏈接

          統計

          book

          tools

          最新評論

          java 1.5 捕獲線程異常

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

          可以關閉 ExecutorService,這將導致其停止接受新任務。關閉后,執行程序將最后終止,這時沒有任務在執行,也沒有任務在等待執行,并且無法提交新任務。

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

          Executors 類提供了用于此包中所提供的執行程序服務的工廠方法。

          用法示例

          下面給出了一個網絡服務的簡單結構,這里線程池中的線程作為傳入的請求。它使用了預先配置的 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) 評論(0)  編輯  收藏 所屬分類: java

          主站蜘蛛池模板: 濮阳市| 曲麻莱县| 申扎县| 丹江口市| 永泰县| 峨眉山市| 任丘市| 江源县| 出国| 胶州市| 安庆市| 丰台区| 南木林县| 宁陕县| 乳山市| 胶州市| 宁武县| 大厂| 瑞昌市| 边坝县| 新闻| 博白县| 达日县| 孝义市| 乌兰察布市| 永登县| 浪卡子县| 丰镇市| 五大连池市| 韶山市| 万宁市| 日土县| 新龙县| 江口县| 红安县| 临泉县| 侯马市| 文山县| 西宁市| 项城市| 苏尼特左旗|