java - 当前线程结束后启动线程

标签 java multithreading

我有一个 Java servlet,它启动一个冗长的任务,该任务可以在发送响应后在后台执行。我可以从日志条目中看出,即使启动线程是 servlet 中的最后一件事,框架仍在新线程启动后执行与请求相关的代码。

我正在考虑将当前线程传递给新线程的构造函数(parentThread),保存该引用,并调用parentThread.join()作为run()中的第一个语句。但这看起来很笨拙。

有更好/更优雅的解决方案吗?

最佳答案

通常线程由 Servlet 容器池化/回收,因此等待终止没有什么意义。 如果您可以独立于当前请求来完成工作,那么无论如何生成线程应该没有问题。

根据您的生态系统,您应该查看 Spring 执行器服务,甚至用于调度后台任务的 @Asynchronous 抽象。您可能还想查看异步 servlet API。

关于java - 当前线程结束后启动线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37030117/

相关文章:

java - Java 中需要访问父函数的棘手情况

java - Spring Boot JPA LEFT JOIN 在 3 个表中

java - 同步性能

java - GCC 和 JVM 自动并行批处理

java - 检查互联网连接时不会加载 Activity

JavaRDD<字符串> 到 JavaRDD<行>

Java HashMap 和对象键

java - 兰特流的高性能缓冲

c++ - C++ 静态成员变量初始化线程安全吗?

multithreading - 锁里面的AtomicInteger有什么用