在Tomcat中用已打开的套接字杀死线程

时间:2014-01-27 22:36:38

标签: multithreading sockets java-ee tomcat

在我在Tomcat 7.x下运行的应用程序中,servlet启动一个新的Thread。在这个线程中,我创建了一个套接字(在端口8081上),它等待客户端连接(serverSocket.accept())。

取消部署应用时,线程不会被杀死。这就是为什么当我重新部署应用程序时,我的新套接字无法侦听端口8081,因为前一个套接字仍在监听它。我还在控制台日志中获得了“内存泄漏”。

我在我的帖子上尝试了setDaemon(true),但它没有解决问题。我该怎么办?

非常感谢。

1 个答案:

答案 0 :(得分:1)

在destroy()方法中关闭套接字。在accept()中被阻塞的线程将抛出一个IOException:让它从那里退出。