コンテナにスレッドを格納します。時間の経過とともに、これらのスレッドの一部は実行され、一部は停止します。私が達成したいのは、コンテナからデッド(停止)スレッドを自動的に(または定期的に)削除することです。これを行う最善の方法は何ですか?
編集:スレッドを単純なリンクリストに保存します:
LinkedList<ServerThread> threadPool = new LinkedList<ServerThread>();
時間の経過とともに、スレッドを追加 (および明らかに削除) する必要があるため、このコンテナーは動的でなければなりません。
EDIT2:これは私が現在スレッドを管理する方法です。ご覧のとおり、着信接続を待ちます。接続がいつ到着するかはわかりませんが、到着したら、新しいスレッドで処理する必要があります。
while (!interrupted()) {
try {
Socket clientSocket = serverSocket.accept();
if (portNumber == Server.SMTP_PORT_NUMBER) {
threadPool.add(new SMTPThread(clientSocket, db));
threadPool.getLast().setName("SMTP Thread " + ++threadCounter);
} else {
threadPool.add(new POP3Thread(clientSocket, db));
threadPool.getLast().setName("POP3 Thread " + ++threadCounter);
}
threadPool.get(threadPool.size() - 1).start();
} catch (SocketTimeoutException e) {
} catch (IOException ioe) {
}
}