我已經編寫了一個帶有多個線程的小型服務器。 經過很多小時(據說目前我無法重現該問題)服務器停止工作。我的代碼看起來像這樣。Java-Server停止正常工作
線程2:
while(true)
{
System.out.println("Point 1");
Socket abc = serverSocket.accept();
System.out.println("Point 2");
connection = true;
}
線程1等待在了Thread.sleep(1000)循環,並檢查是否連接是真實的。如果是這樣,它開始工作,否則它打印「等待」。如果連接中止,它將連接設置爲false。
現在我的Mainprogramm連接到服務器。服務器打印 等待 等待 (依此類推,直到連接建立) 點1 點2 它應該。 (通過clientSocket = new Socket(inetAddress,Integer.parseInt(port))完成的連接);當此命令成功時,假設連接沒有異常,則建立連接) 。
運行Thread1多小時後,只打印「等待」,「等待」,不管我多久與客戶端連接。 我很難過,因爲它只發生在多個小時的運行之後。 Java版本是 Java版本「1.7.0_07」 Java™SE運行時環境(版本1.7.0_07-b10) 此版本是否存在任何已知問題或者哪裏可能是錯誤?任何線索如何重現錯誤?
感謝您的幫助。
您是否考慮在調試器中執行線程轉儲或運行服務器以獲取有關正在進行的更多信息? –
現在。問題1是服務器在另一臺機器上作爲開發機器運行。問題2我沒有辦法暫停eclipse調試器中的線程,然後向我顯示它現在的位置excecute.s。那可能嗎?如果是這樣,你可以發佈一個鏈接到一個指令嗎? – ServerSocketAccept
現在我設法用eclipse進行調試。服務器現在在開發機器上運行。讓我們希望這個問題再次發生,我可以調試它。 – ServerSocketAccept