我有一个 Java 项目,它使用 JSoup 解析 html 页面并在 Excel 电子表格(.xls
文件)中写入一些日期。
在框架中有一个“停止操作”按钮,因此用户可以停止任务,但该按钮在解析/写入结束之前不起作用。框架中的“X 按钮”具有相同的行为。
有人可以帮我解决这个问题吗?
我有一个 Java 项目,它使用 JSoup 解析 html 页面并在 Excel 电子表格(.xls
文件)中写入一些日期。
在框架中有一个“停止操作”按钮,因此用户可以停止任务,但该按钮在解析/写入结束之前不起作用。框架中的“X 按钮”具有相同的行为。
有人可以帮我解决这个问题吗?
您所做的很可能是将长时间运行的代码放在主线程上。如果您这样做,您的按钮将无法与工作交互并停止工作。
您需要将工作转移到另一个线程上,然后让该线程定期检查(例如,在每个小工作单元之后)它是否被礼貌地要求停止(通过设置一个标志,标记为volatile
这样线程不'不缓存值并且看不到更新)。
确保你没有陷入使用Thread.stop()
这个的陷阱,这是不推荐的,并且有充分的理由。您需要确保您的工作线程与主线程合作以在被要求停止时停止。
您应该将所有的解析和写入操作放在一个外部线程中,如果用户单击“停止操作”按钮,则中断该线程。
这是一个关于如何使用线程中断的示例:http ://www.tutorialspoint.com/javaexamples/thread_interrupt.htm