SCENARIO
我有一个java应用程序(使用Spring Integration for Listening on TCP / IP port)。 我正在使用一些工作线程与使用java.util.concurrent.Executors工厂创建的ExecuterService。 主线程创建工作线程并在循环中等待如下
while(!shutdownRequested)
{
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
我有一个关闭挂钩,它会停止执行程序服务并在超时时强制关闭。
问题
该程序无法在我的机器上成功终止(Windows 7)。它使一个线程监听tcp端口,然后该进程变得不可访问。
我无法从任务管理器中删除此进程并获得“拒绝访问”错误。
有趣的是,这个问题只发生在我的机器上,不会影响任何其他Windows 7机器。在所有其他机器上,来自控制台的Control-C始终会成功停止程序。
我过去遇到过这个问题(使用相同的应用程序),重新格式化和重新安装Windows后问题神奇地消失了。 (我知道这有点太多了!)
该应用程序完美运行了好几个月,但不幸的是,由于其他原因我最近不得不重新格式化我的电脑。重新格式化后,问题再次出现。
这非常令人沮丧,因为每次我需要重新启动此应用程序时都必须重新启动Windows,因为它无法绑定到TCP端口,因为该端口上的僵尸进程会变亮。
我的设置可能有什么问题?