我正在尝试使用 Spark 开发一个应用程序(网络框架),我需要在后台处理一些事情(异步),这样我就不会阻止用户。
为此,我正在考虑使用 ThreadPoolExecutor。有没有办法保存队列并稍后恢复? (也许应用程序已停止/重新启动,而队列中仍有项目)。
另外,如何向用户报告进度(待处理、正在进行、已完成)?
基本上我正在寻找类似 Celery 的东西但对于 Java,它需要可嵌入到我的应用程序中,这样用户就不需要安装额外的服务。
最佳答案
ThreadPoolExecutor
类提供了一个名为 getQueue() 的方法来公开队列。
当您在旧的执行程序关闭后创建新的执行程序时,您应该能够重用队列对象(及其内容)。
另一种可能性是通过使用自定义队列类来实现执行程序挂起/恢复,您可以从外部阻止和解除阻止。这样做的优点是,当您挂起和恢复执行程序时,不需要销毁/重新创建池线程。
关于java - 如何保存ThreadPoolExecutor的队列以便重启后可以恢复?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34445925/