簡體   English   中英

如何在Java EE上下文中合理地延遲處理?

[英]How to delay processing reasonably in Java EE context?

在Java EE 5環境中,在繼續處理自己的數據之前,我要確保存在由另一部分寫入的某些數據。

從歷史上(J2EE時間)開始,這是通過在等待Thread.sleep等500ms之后將要處理的數據對象放入內部JMS隊列來完成的。

但這似乎並不是解決該問題的最佳方法,所以我有兩個問題:

  1. 在Java EE上下文中使用sleep方法是否有問題?
  2. 延遲Java EE 5應用程序中某些處理的合理解決方案是什么?

編輯:

我應該提到,我的處理是在通過MDB處理來自JMS隊列的對象時發生的。

可能是這樣,我一直在等待的數據永遠不會顯示,因此必須有某種超時,然后我才能對數據進行一些特殊處理。

您可以使用EJB TimerService功能。 應避免在托管環境中使用線程。

我同意@dkaustubh關於計時器的觀點,並避免在JavaEE中進行線程操作。

另一種可能性是使用延遲交付的JMS隊列。 盡管它不是JavaEE API的一部分,但是大多數消息傳遞系統供應商都支持它。 在這里檢查

我認為,通過一些高級線程方法可以實現。 除了考慮手動同步和線程管理之外,您始終可以使用Java Concurrent包。

未來可能是實現此目標的方法之一。 請參考Java並發包。

使用通知和Object#wait() / Object#notifyAll()即多線程,生產者通知使用者。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM