涉及到 java.util.concurrent 包和 Future 接口,我发现(如果我没有错的话),仅能使用 SwingWorker 实现类才能启动长时间任务并查询其进度。
这引出以下问题:
在非 GUI、非 Swing 应用程序(比如控制台应用程序)中,是否有一种方法可以在后台启动长时间任务并允许其他线程检查进度?我认为,这种能力不应该被限制在 Swing/GUI 应用程序中。否则,唯一可用的选项是通过 ExecutorService::submit 来提交任务,它返回一个 Future 对象。但是,基本的 Future 接口不允许监视进度。