在没有线程的情况下限制Java的执行时间



(请不要将此重复标记为我之前的问题,它们不是-我正在寻找一个单线程解决方案)。

我需要一个简单的方法来限制java中一些方法的执行时间。

理想情况下,我认为可以这样做:

  1. 我调用了一个函数或方法
  2. 如果给定的时间没有返回,
  3. 它有一个异常。

但是其他的解决方法对我来说都是可以的。我所需要的,实际上相当于unix上的alarm() libc调用。这可能吗?

我需要一个单线程解决方案。

在java中一切都在线程中运行。为了检查某个线程是否被击中,您需要从"另一个"线程监视它。要么你需要使用TimerTask来生成新的线程,要么你使用一些api方法,比如ScheduledExecutorService

所以恕我直言,没有多线程很难提供一个优雅的解决方案。

当然也可能有hack,就像我下面展示的那样。但在实际场景中,它们既不优雅,也不值得推荐。

    public static void main(String[] args) {
        long startMilli = System.currentTimeMillis();
        for(int i=0;;i++) {
            //Do something
            long timepassed = System.currentTimeMillis() -startMilli;
            if(timepassed==1000) {
                throw new RuntimeException("taking too long");
            }
        }
    }

相关内容

  • 没有找到相关文章

最新更新