0
我目前正在編寫一個小型的Java程序,我有一個客戶端向服務器發送命令。一個單獨的線程正在處理來自該服務器的回覆(回覆通常非常快)。理想情況下,我暫停發出服務器請求的線程,直到收到回覆或超出某個時間限制時爲止。如何使線程等待服務器響應
我目前的解決辦法是這樣的:
public void waitForResponse(){
thisThread = Thread.currentThread();
try {
thisThread.sleep(10000);
//This should not happen.
System.exit(1);
}
catch (InterruptedException e){
//continue with the main programm
}
}
public void notifyOKCommandReceived() {
if(thisThread != null){
thisThread.interrupt();
}
}
的主要問題是:此代碼拋出時一切都會好起來,因爲它應該和終止時,壞事發生異常。什麼是解決這個問題的好方法?
幾種解決方案,在這個線程可用:http://stackoverflow.com/questions/289434/如何讓一個Java線程等待另一個線程輸出?rq = 1 –
如果發送消息的線程需要等待響應,爲什麼要等待另一個線程上的響應?無論如何,你必須在同一個線程中進行操作。如果線程僅用於睡眠,則線程無用。無論如何,它拋出了什麼異常? – RealSkeptic
它大致上與[如何在Java中異步執行POST REST調用]相同(http://stackoverflow.com/questions/43268903/how-to-make-a-post-rest-call-asynchronously -in-java的)。用遠程呼叫替換HTTP部分。 – andih