[英]How to delay processing reasonably in Java EE context?
在Java EE 5環境中,在繼續處理自己的數據之前,我要確保存在由另一部分寫入的某些數據。
從歷史上(J2EE時間)開始,這是通過在等待Thread.sleep等500ms之后將要處理的數據對象放入內部JMS隊列來完成的。
但這似乎並不是解決該問題的最佳方法,所以我有兩個問題:
編輯:
我應該提到,我的處理是在通過MDB處理來自JMS隊列的對象時發生的。
可能是這樣,我一直在等待的數據永遠不會顯示,因此必須有某種超時,然后我才能對數據進行一些特殊處理。
您可以使用EJB TimerService功能。 應避免在托管環境中使用線程。
我同意@dkaustubh關於計時器的觀點,並避免在JavaEE中進行線程操作。
另一種可能性是使用延遲交付的JMS隊列。 盡管它不是JavaEE API的一部分,但是大多數消息傳遞系統供應商都支持它。 在這里檢查 。
我認為,通過一些高級線程方法可以實現。 除了考慮手動同步和線程管理之外,您始終可以使用Java Concurrent
包。
未來可能是實現此目標的方法之一。 請參考Java並發包。
使用通知和Object#wait()
/ Object#notifyAll()
即多線程,生產者通知使用者。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.