我想在不使用不推荐的stop()方法的情况下终止java中的线程。 我的线程中的run()方法调用另一个执行可能需要很长时间的任务的方法,我希望能够在它返回之前停止它。
我的问题是我不想在从run调用的方法中处理这个问题,所以例如我不能使用全局布尔变量来终止线程因为我无法在其中检查它方法。 有没有办法可以使用interrupt()方法来实现这个目标?
答案 0 :(得分:2)
简短回答:你有来重写长时间运行的方法,以便检查一些全局布尔值或中断标志。根据以下评论中的assylias建议,您可以执行while (!isInterrupted()) { ... }
。
如果长时间运行的方法处于某个(表现良好的)阻塞调用的中间,那么您将需要中断该线程,使其从阻塞调用中提前返回,以便您可以检查条件以查看如果是时候终止了。