java - 停止 servlet 响应

标签 java multithreading servlets

我面临以下问题。我有一个 servlet,它通过视频剪辑来满足客户端请求。但这个视频剪辑是另一个线程(转码器)的产物。如果由于转码器线程尚未完成其工作而导致剪辑尚未准备好下载,则客户端请求将失败! 关于如何处理此案有什么建议吗?我怎样才能停止 servlet 的响应,直到线程准备好转码剪辑?

提前致谢! 安东尼斯

最佳答案

这里最直接的做法是使用 Future 。向转码器提交请求,并让它立即返回一个 Future。然后,HTTP 线程可以阻塞此 future 调用 get 直到视频准备就绪。

加入对我来说听起来不是一个好的选择。 Thread#join 会阻塞,直到目标线程终止,但线程在完成作业后是否终止是实现细节。例如,如果转码器使用缓存的线程池,则应用程序。休息。

关于java - 停止 servlet 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3717488/

相关文章:

java - 阻止 EDT 直到 executorservice 完成所有任务

c - 消息队列中的两种消息

java - java中多线程用in run方法调用方法

java - 在这种情况下我需要使用线程安全映射吗?

java - 将依赖项注入(inject)普通的旧 Tomcat HTTP servlet

java - ArrayList<CustomClass> 中的 JSON 对象始终覆盖前一个对象。怎么解决?

java - 当派生实体包含 SAX 代码时,不会加载派生实体的 JPA 属性

java - 如何在不将 null 作为输出的情况下打印 getter String?

rest - 使用 PreMatching 过滤器更改 uri 路径

java - web.xml 中项目的 servlet-mapping 属性不位于 webapps 的顶层