java 1.5 捕獲線程異常
Executor
提供了管理終止的方法,以及可為跟蹤一個或多個異步任務執行狀況而生成 Future
的方法。
可以關閉 ExecutorService,這將導致其停止接受新任務。關閉后,執行程序將最后終止,這時沒有任務在執行,也沒有任務在等待執行,并且無法提交新任務。
通過創建并返回一個可用于取消執行和/或等待完成的 Future
,方法 submit 擴展了基本方法 Executor.execute(java.lang.Runnable)
。方法 invokeAny 和 invokeAll 是批量執行的最常用形式,它們執行任務集合,然后等待至少一個,或全部任務完成(可使用 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