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 閱讀(489) 評論(0)  編輯  收藏 所屬分類: java

          主站蜘蛛池模板: 江城| 郎溪县| 岚皋县| 遂溪县| 如皋市| 铁岭市| 商水县| 康平县| 南岸区| 马关县| 酉阳| 廊坊市| 黑龙江省| 汕头市| 洞口县| 洪雅县| 贵南县| 山西省| 洛浦县| 定兴县| 丘北县| 广安市| 永新县| 黑山县| 浪卡子县| 青海省| 新蔡县| 龙南县| 互助| 克拉玛依市| 保山市| 化州市| 邹城市| 土默特右旗| 昭苏县| 望江县| 鹤庆县| 朔州市| 同江市| 阳春市| 苍溪县|