是否可以停止函数';在Java中,是否在指定的时间内执行?

是否可以停止函数';在Java中,是否在指定的时间内执行?,java,timer,Java,Timer,我想知道如何在java中的指定时间内停止指定函数的执行 例如:我可以调用一个名为print_data()的函数。如果执行需要更多的时间,我将不得不停止该函数的执行 有可能这样停止执行吗 提前感谢您可以为函数添加一些检查:在函数开始工作时保存时间戳,然后在函数内部定期检查,如果函数花费的时间太长,则引发异常 这是在Java中完成此类任务的最干净的方法。您可以使用fromJava.util.concurrent,尤其是timedJoin方法 您可以指定等待时间和线程timedJoin将让线程执行到终

我想知道如何在java中的指定时间内停止指定函数的执行

例如:我可以调用一个名为print_data()的函数。如果执行需要更多的时间,我将不得不停止该函数的执行

有可能这样停止执行吗


提前感谢

您可以为函数添加一些检查:在函数开始工作时保存时间戳,然后在函数内部定期检查,如果函数花费的时间太长,则引发异常

这是在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之间的区别。