嘿所以我拿起了這個用於執行ExecutorService的java文檔的例子。我想確認這段代碼的流程,Executors.newFixedThreadPool會創建一個線程池(我猜)。所以serversocket將等待連接,一旦它獲得一個連接,它就啓動一個線程,所以現在poolize減1。一旦線程完成執行,poolize會再次增加1,不會呢?線程會放棄它使用的資源嗎?在java中需要關於ExecutorService的建議
class NetworkService implements Runnable {
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 run() { // run the service
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 on socket
}
}