gpt4 book ai didi

java - 在 Servlet 调用之外的 Java 应用程序服务器中启动线程或加载共享资源的最佳实践是什么?

转载 作者:行者123 更新时间:2023-11-30 05:08:40 24 4
gpt4 key购买 nike

抽象问题

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

我实际上在做什么

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

更新

我找到了this question公认的答案是使用 LifeCycle Listener。这是一种可移植的处理方式,还是我的代码将绑定(bind)到单个应用程序服务器。经过更多调查,我在留言板上发现了一些帖子,说我可以在 ServletContextListener 中执行此操作。实现。

最佳答案

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

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

谷歌“java工作线程等待通知”有很多例子。

关于java - 在 Servlet 调用之外的 Java 应用程序服务器中启动线程或加载共享资源的最佳实践是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4241370/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com