Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Tomcat-websocket servlet的异步任务_Java_Multithreading_Tomcat_Servlets_Websocket - Fatal编程技术网

Java Tomcat-websocket servlet的异步任务

Java Tomcat-websocket servlet的异步任务,java,multithreading,tomcat,servlets,websocket,Java,Multithreading,Tomcat,Servlets,Websocket,我有一个运行在Tomcat8.0.5上的小型JavaWebSocket Servlet。 通常,它会立即回复收到的每条消息。但在某些用例中,最好有一个计划好的事件,它在延迟后只运行一次,并向客户端发送新消息。 我已经做了一些研究,但我不确定这些文章是否符合我的要求: 我解决这个问题的方法是某种服务,它采用一个整数作为延迟和一些其他必需的参数。基于此,它创建了一个新线程,在执行Thread.sleep(整数)之后,该线程将发送一些新消息 这是一个合适的解决方案还是有一些“最佳实践”来解决这个问

我有一个运行在Tomcat8.0.5上的小型JavaWebSocket Servlet。 通常,它会立即回复收到的每条消息。但在某些用例中,最好有一个计划好的事件,它在延迟后只运行一次,并向客户端发送新消息。 我已经做了一些研究,但我不确定这些文章是否符合我的要求:

我解决这个问题的方法是某种服务,它采用一个整数作为延迟和一些其他必需的参数。基于此,它创建了一个新线程,在执行Thread.sleep(整数)之后,该线程将发送一些新消息


这是一个合适的解决方案还是有一些“最佳实践”来解决这个问题?

quartz scheduler呢?您应该做的是应用一个有限的线程池;在线程化服务器环境中,随意生成线程不是一个好主意,因为您可能会严重破坏服务器管理资源的能力。Oleg提到的ExecutorService可以帮助做到这一点,但Quartz在内部也使用线程池,因此它也是一个具有很大灵活性的不错的解决方案。@IwishIcouldthinkofagood Quartz看起来确实是一个很好的方法,但使用调度框架来实现这一点不是有些过分吗?我不知道它对性能有多大影响-你会在我的用例中使用它吗?@Gimby我刚开始阅读Olegs的答案-不幸的是,我按了F5,看起来他删除了它…奇怪的是,这是一个足够体面的答案。问题的要点是:不要只生成线程,应用有限的线程池。由你来决定什么是过度杀戮,什么不是过度杀戮。