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

标签 multithreading sockets jakarta-ee tomcat

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

取消部署应用程序时,不会终止线程。这就是为什么当我重新部署应用程序时,我的新套接字无法在端口 8081 上监听,因为以前的套接字仍在监听它。我还在控制台日志中发现“内存泄漏”。

我试图在我的线程上setDaemon(true) 但它没有解决问题。我该怎么办?

非常感谢。

最佳答案

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

关于multithreading - 在 Tomcat 中用打开的套接字杀死线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21393158/

相关文章:

java - RESTful Web 服务可以从子线程返回 POST 响应吗?

multithreading - 存在竞争条件是否可以接受?

sockets - 从 'struct sock'导出套接字fd

java - 如何将 log4j 输出打印到日志文件中?

java - __FIRST_PHASE__ 丢失 [jboss.naming.context.java.app.earth.env.EarthDS]"]}?

multithreading - 基于流/响应式(Reactive)编程中的事务/请求-响应模式

android - 你如何让一个线程运行它的内容,暂停并重复?

java - 为什么我的方法没有为类型对象定义?

c - 将字符串中的 IP 传递给 htonl

java - 如何在外部文件夹中为 tomcat 中的 Web 应用程序配置 log4j.properties