我有一個Java應用程序(使用Spring集成來偵聽TCP/IP端口)。 我正在用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端口。
任何想法可能是我的設置有問題?
我會確保你有最新的Windows更新,因爲這似乎是一個操作系統錯誤。 –
謝謝彼得的建議,但Windows安裝是與我的公司相同的標準圖像,而其他人並沒有面臨這個問題!我也嘗試更新我的Java到最新版本。 –