在我的程序中,我基本上試圖連接到發佈者並獲取數據。基本功能是有在這些步驟以單線程方式包裝回調函數
- 我讓我做對數據的請求,用戶名和密碼等
- 出版商的連接。方法退出
- 廣告發布商的API給了我一個回調的方法
onDataUpdate(Object theUpdate)
從那裏,我可以打印數據,或將其寫入到數據庫或任何我需要做的。這一切都有效。
我的問題是,我現在想以這樣的方式包裝功能,即調用程序可以說請求數據並儘快收到它。意思是說,我想讓我的暴露方法看起來像
public Object getData() {
subscribeForData();
// somehow wait
return theUpdate;
}
我該如何做到這一點?有什麼方法可以使用線程在我收到更新時等待/通知?我是一個新的stackoverflow和多線程編程,所以任何幫助和示例代碼將不勝感激!提前致謝。
來自CountDownLatch的javadoc:'一種同步協助,它允許一個或多個線程等待,直到在其他線程中執行的一組操作完成爲止。 – Wolfgang
你有這樣的例子嗎?我似乎無法得到它的工作。我在我的調用類中創建了一個新的CountDownLatch,並將它傳遞給實際接收更新的類。所以他們都提到了同樣的鎖定。在我的onDataUpdate方法中,我調用latch上的countDown,但似乎沒有通知其他正在無限期等待的類。思考? – Korra
@Korra我建議你用你的代碼編輯問題。 –