1

在 Java EE 5 环境中,在继续处理我自己的数据之前,我遇到了确保另一部分写入的某些数据存在的问题。

从历史上看(J2EE 时代),它是通过在通过 Thread.sleep 等待例如 500 毫秒后将要处理的数据对象放入内部 JMS 队列来完成的。

但这感觉不是处理该问题的最佳方法,所以我有两个问题:

  1. 在 Java EE 上下文中使用 sleep 方法有什么问题吗?
  2. 在 Java EE 5 应用程序中延迟某些处理的合理解决方案是什么?

编辑:

我应该提到,我的处理发生在通过 MDB 处理来自 JMS 队列的对象时。

可能的情况是,我正在等待的数据永远不会出现,所以必须有某种超时,之后我可以对我的数据进行一些特殊处理。

4

4 回答 4

2

您可以使用 EJB TimerService 功能。应避免在托管环境中使用线程。

于 2013-10-01T19:21:03.553 回答
1

我同意@dkaustubh 关于计时器和避免JavaEE 中的线程操作的观点。

另一种可能性是使用延迟传递的 JMS 队列。尽管它不是 JavaEE API 的一部分,但大多数消息传递系统供应商都支持它。在这里检查

于 2013-10-01T20:16:55.903 回答
0

我认为,使用一些高级线程方法是可能的。除了考虑手动同步和线程管理之外,您还可以随时使用该Java Concurrent包。

未来可能是做到这一点的方法之一。请参考 Java 并发包。

于 2013-10-01T12:19:18.890 回答
-1

使用通知和Object#wait()/Object#notifyAll() 即多线程,生产者通知消费者。

于 2013-10-01T12:09:37.717 回答