加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java – Servlet中的线程和并发

发布时间:2020-12-14 19:13:56 所属栏目:Java 来源:网络整理
导读:我有一个Web应用程序从数据库中检索(大)结果列表,然后需要通过查看每个结果削减列表,并抛出“无效”的结果.使结果“无效”的参数是动态的,我们无法将工作传递给数据库. 因此,一个想法是创建一个线程池和ExecutorService并同时检查这些结果.但我一直看到人们

我有一个Web应用程序从数据库中检索(大)结果列表,然后需要通过查看每个结果削减列表,并抛出“无效”的结果.使结果“无效”的参数是动态的,我们无法将工作传递给数据库.

因此,一个想法是创建一个线程池和ExecutorService并同时检查这些结果.但我一直看到人们说“哦,规范禁止在servlet中产生线程”或“这只是一个坏主意”.

所以,我的问题是:我该怎么办?我在一个servlet 2.5容器中,所以作为3.0规范的一部分的所有异步的好东西都无法使用.编写一个我通过JMS与之通信的单独服务似乎有点矫枉过正.

在这里寻找专家意见.

贾森

最佳答案
废话.

JEE规范有很多“不应该”和“你不要”.另一方面,Servlet规范没有. Servlet规范更加狂野.它实际上并没有像JEE规范那样深入到实际操作方面.

我还没有看到一个JEE容器(一个纯粹的servlet容器,一个Tomcat / Jetty,或者全船ala Glassfish / JBoss)实际上阻止了我自己开出一个线程. WebSphere可能,它应该是相当臭名昭着的,但我没有使用过WebSphere.

如果创建不守规矩,自我管理的线程的概念让你发痒,那么完整的JEE容器内部有一个正式的“WorkManager”,可以用来剥离线程.他们只是以不同的方式揭露它们.这是获取线程的“通过书籍 – 机制”的更多机制.

但是,坦率地说,我不会打扰.使用标准类库中的Executors可能会获得更多成功.如果你的系统太多线程使你的系统饱和,一切都失控了,好吧,那就在你身上.不要那样做(tm).

至于异步解决方案是否合适,我会对此进行讨论.从你的帖子中不清楚它是否存在.但你的问题是线程和Servlet.

去做就对了.请注意它“可能不便携”,做得对(使用执行程序),对此负责,容器不会更明智,也不关心.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读