我将线程存储在容器中。随着时间的推移,这些线程中的一些会运行,而其中一些会死掉。我想要实现的是:自动(或定期)从容器中删除死(停止)线程。做这个的最好方式是什么?
编辑:我将线程存储在一个简单的链表中:
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) {
}
}