我的系統由一個接收「請求」數據包的「代理」類組成,將它們編組並將它們通過網絡發送給服務器,服務器將它們解組,並處理並返回一些「響應數據包」。如何使用Java併發原語實現阻塞請求 - 回覆?
我的代理端的「提交」方法應該阻塞,直到收到請求的回覆(數據包有用於標識和引用目的的ID),或者直到超時。
如果我是在早期版本的Java中構建它,我可能會在我的代理中實現一組「待處理的消息ID」,我將在其中提交一條消息,並在對應的ID上使用wait() )。當收到回覆時,處理線程會通知()相應的ID。
有沒有更好的方法來實現這個使用現有的庫類,也許在java.util.concurrency?
如果我使用上述解決方案,在wait()被調用之前,處理回覆到達的潛在競爭條件的正確方法是什麼?
謝謝!未來似乎可能是一個可能的候選人,但我不確定這不是對這個班級的濫用。看起來響應實際上有一個超時獲得,所以這一定會有所幫助。 – Uri 2010-04-02 03:20:44