Stopping/Interrupting 一个操作

Stopping/Interrupting an operation

我有一个 Java 项目,它使用 JSoup 解析 html 页面并在 Excel 电子表格(.xls 文件)中写入一些日期。

框架中有一个按钮 "Stop operation",因此用户可以停止任务,但按钮在 parsing/writing 结束之前不起作用。 "X button" 在框架中具有相同的行为。

有人可以帮我解决这个问题吗?

你应该把所有的解析和写入操作放在一个外部线程中,然后如果用户点击停止操作按钮就中断线程。

以下是有关如何使用线程中断的示例:http://www.tutorialspoint.com/javaexamples/thread_interrupt.htm

您所做的很可能是将长运行代码放在主线程上。如果这样做,您的按钮将无法与作品互动并停止它。

您需要将工作转移到另一个线程,然后让该线程定期检查(例如,在每个小的工作单元之后)它是否被礼貌地要求停止(通过设置一个标志,标记为volatile 这样线程就不会缓存值并且看不到更新)。

确保您不会陷入为此使用 Thread.stop() 的陷阱,它已被弃用,并且有充分的理由。您需要确保您的工作线程与主线程协作,以便在主线程被要求时停止。