java - 如何保存ThreadPoolExecutor的队列以便重启后可以恢复?

标签 java spark-java

我正在尝试使用 Spark 开发一个应用程序(网络框架),我需要在后台处理一些事情(异步),这样我就不会阻止用户。

为此,我正在考虑使用 ThreadPoolExecutor。有没有办法保存队列并稍后恢复? (也许应用程序已停止/重新启动,而队列中仍有项目)。

另外,如何向用户报告进度(待处理、正在进行、已完成)?

基本上我正在寻找类似 Celery 的东西但对于 Java,它需要可嵌入到我的应用程序中,这样用户就不需要安装额外的服务。

最佳答案

ThreadPoolExecutor类提供了一个名为 getQueue() 的方法来公开队列。

当您在旧的执行程序关闭后创建新的执行程序时,您应该能够重用队列对象(及其内容)。

另一种可能性是通过使用自定义队列类来实现执行程序挂起/恢复,您可以从外部阻止和解除阻止。这样做的优点是,当您挂起和恢复执行程序时,不需要销毁/重新创建池线程。

关于java - 如何保存ThreadPoolExecutor的队列以便重启后可以恢复?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34445925/

相关文章:

java - 在java中创建一个受密码保护的文件

routes - Sparkjava : Do routes have to be in main method?

java - ClassNotFoundException : spark. 从命令行运行时的请求

java - 如何使用新的 computeIfAbsent 函数?

java - 如何使用 Java 的 Graphics2D 的浮点坐标?

javascript - 使用 postman 向运行 SparkJava 的本地主机服务器发出请求,但不能使用浏览器中的 javascript

Java Spark框架: Route to a specific static file

javascript - 在 JavaScript 中读取 TIFF 文件的响应

java - 编写网络类的最佳方法

java - 如何写入 Java 中的 txt 文件中的特定行号