是否可以停止函数';在Java中,是否在指定的时间内执行?
我想知道如何在java中的指定时间内停止指定函数的执行 例如:我可以调用一个名为print_data()的函数。如果执行需要更多的时间,我将不得不停止该函数的执行 有可能这样停止执行吗是否可以停止函数';在Java中,是否在指定的时间内执行?,java,timer,Java,Timer,我想知道如何在java中的指定时间内停止指定函数的执行 例如:我可以调用一个名为print_data()的函数。如果执行需要更多的时间,我将不得不停止该函数的执行 有可能这样停止执行吗 提前感谢您可以为函数添加一些检查:在函数开始工作时保存时间戳,然后在函数内部定期检查,如果函数花费的时间太长,则引发异常 这是在Java中完成此类任务的最干净的方法。您可以使用fromJava.util.concurrent,尤其是timedJoin方法 您可以指定等待时间和线程timedJoin将让线程执行到终
提前感谢您可以为函数添加一些检查:在函数开始工作时保存时间戳,然后在函数内部定期检查,如果函数花费的时间太长,则引发异常 这是在Java中完成此类任务的最干净的方法。您可以使用from
Java.util.concurrent
,尤其是timedJoin
方法
您可以指定等待时间和线程timedJoin
将让线程执行到终止,或者在处理时间超过允许的超时时间时停止。您可以使用匿名类轻松地将方法包装到线程对象中
这可以简单到:
SECONDS.timedJoin(
new Thread() {
public void run() {
print_data();
}
},
10);
10秒超时。没有安全的方法来停止线程的执行,除非它是协作的;e、 g.定期检查“中断”标志
@BobbyShaftoe在评论中提出了这一点:
您可以在单独的线程中执行此函数,然后在一段时间后中止该线程
这是一个误导和危险的建议。“中止”线程的唯一方法是使用不推荐使用的thread.stop()
方法。如果你看一下这种方法的原理,你会发现它是一种从根本上说是危险的方法,很容易产生不良和不可预测的副作用
还应该注意的是@tonio的解决方案并没有停止函数的执行。它只是停止等待函数的执行完成。该函数可能会无限期地继续执行,占用资源,效果不佳。您可以在单独的线程中执行此函数,然后在一段时间后中止该线程。很抱歉,我没有在程序中使用线程,还有其他可能吗?我开始考虑一些计时器线程和中断进程的机制,但是如果打印是在循环中完成的,那么您的方法就简单得多,也更有效+1.+1@Stephen C:用于区分实际停止执行和在ceetain超时后仅忽略at之间的区别。