繁体   English   中英

如何获得java中的主线程?

[英]How to get the main thread in java?

所以我有一个长时间运行的进程,我想将其封装为 Runnable 并将其分派到一个线程中。 更具体地说,我有一个 POST web 服务,它在文件系统中创建一个文件,但创建文件可能需要很长时间。

在我的 web 服务的资源方法中,我希望能够调度一个线程来创建文件并返回状态 200。我认为我不能只做 Thread.join 因为这意味着当前线程会必须等待文件创建线程完成。 相反,我想将文件创建线程加入主线程。 问题是,我如何获得 java 中的主线程?

我不确定我是否正确。 这是我的理解:

您想要执行一个可能长时间运行的操作(文件创建),您不希望您的服务方法在执行该任务时阻塞您希望该任务在单个请求的边界/生命周期之外存在的线程中执行。

到目前为止我是对的吗?

如果真的建议您查看 java.util.concurrent 中的更新概念。 那里描述的概念应该给你足够的信息来解决这个问题

基本信条:不要在线程中思考,在任务中思考。

通用书籍推荐:Java Concurrency in Practice by Brian Goetz

您将需要异步处理请求。 将创建一个单独的线程来完成繁重的工作,并且请求接收线程将可以自由处理其他请求。 请查看以下文章。

当您产生文件创建线程时,您需要将某种引用传递给父线程,以便它可以返回通信(即您提供一些东西来启用回调)。

这可能是实际的线程 object (使用 Thread.currentThread 获得,正如有人在评论中所说)或其他一些 object 用于在文件创建线程完成时发出信号。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM