我希望能夠等待線程從另一個類上完成的一些計算中返回一個值。讓我來發布一些代碼:等待一個線程結果返回一個方法的值(Webapp)
public class ClassA implements Runnable{
public boolean threadRunning ;
public String value ;
public ClassA() {
...
}
public String getValueFromServer() {
//call to a method in the server that does some calculation
ClassB.sendPetitionToServer() ;
t=new Thread (this) ;
threadRunning = true ;
t.start();
return value
}
public void run()
{
while(threadRunning)
{
checkValue()
}
}
public void checkValue() {
String value = ClassB.getInstance().getValue ;
if (value!=null) {
threadRunning = false ;
}
}
}
的問題是,我怎麼能等待線程從法從ClassB.SendPetitionFromToServer返回一個值()? ClassB方法填充該值,但必須進行一些耗費時間(5-8秒)的計算。 ClassB不是可運行的,是一個簡單的類。也許我應該讓另一個類存儲值並通知ClassA。
總結我的問題(也許是困惑,甚至我的方法只是愚蠢的)。
我正在開發一個Java WebApp。我有一個實現Runnable接口的ClassA。這個類有一個方法,需要從另一個ClassB中檢索一些需要執行一些相當繁重的計算的信息,這需要花費一些時間(從MySQL檢索一些信息,使用info進行一些計算)。我如何才能從ClassA中停止該方法,直到獲得ClassB的響應?無論如何去做?
在此先感謝
我不明白爲什麼要使用線程來處理繁重的工作,如果您仍然等待直到此線程完成工作以繼續... –
要了解有關@LuiggiMendoza說,Google *線程安全*的更多信息。如果它引入競爭條件,你的線程就不安全。 – Rainbolt
@John我不是在談論競爭條件,我可以這樣想:*工人A可以完成這項工作W1和W2,但是W2很重,所以我會打電話給工人B處理W2,但工人A必須等待直到工人B完成工作來繼續工作。換句話說,在這種情況下你並沒有解決性能問題,但是即使使用一個額外的線程= \。 –