我有一个线程可能会卡住并一直运行下去。因此在一定时间后,我希望它停止执行,转到finally方法做清理,然后死掉。我将如何安全地执行此操作?谢谢。
关于如何执行此操作,我的第一个想法是创建一个子线程并使其 hibernate ,然后进行清理。但是当父线程仍在尝试运行但它不能运行时,它会输出错误。
最佳答案
将您的代码重构为 Callable 并使用 ExecutorService 获取 Future。然后使用带有超时的 get,如果到那时还没有完成,则会抛出 TimeoutException。参见 https://stackoverflow.com/a/2275596/53897一个完整的例子。
关于java - 经过一定时间后,使线程最终进入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17957157/