1

抽象问题

将资源加载到将在 Java 应用程序服务器中的 servlet 之间共享的内存中的最佳方法是什么?

我实际上在做什么

我想创建一个监视队列的守护线程。这个队列可以有从 servlet 线程添加到它的对象。线程将等待一段时间,然后检查队列中是否有项目,如果有,则处理它们并删除它们。这个线程需要在某个时候在某个地方启动。我在想一个只实现了 init 方法的 servlet 可以完成这个任务,或者有没有更好的地方将这样的启动代码放在应用程序服务器中?我在处理这个问题时很不靠谱吗?

更新

我发现了这个问题,接受的答案是使用 LifeCycle Listener。这是一种可移植的做事方式,还是我的代码将绑定到单个应用程序服务器。更多的调查使我在留言板上找到了一些帖子,说我可以在ServletContextListener实现中做到这一点。

4

1 回答 1

2

我通常使用您描述的方法从 Servlet 间接启动这些类型的工作线程(通常它们存在于执行队列提取和控制处理的其他对象中)。

为了从线程中拉出对象,您不需要根据时间来执行此操作,您可以让队列对象上的线程 wait() 并且当某个对象被其他线程放入队列时,该线程将调用 notify () 在队列上释放正在观看的“工作”线程。

Google 'java worker thread wait notify' 有很多例子。

于 2010-11-22T01:01:56.247 回答