如何在主线程上的java中的某些代码周围设置超时?

7 java multithreading timeout

我正在寻找与ruby中相同的java功能:

SystemTimer.timeout_after(30.seconds)确实做了一些事情

我可以通过分叉线程然后在一段时间后杀死它来实现这一点,但有更简单的方法吗?

Mor*_*075 -1

要么在线程中运行它,要么执行如下操作:

void method() {
    long endTimeMillis = System.currentTimeMillis() + 10000;
    while (true) {
        // method logic
        if (System.currentTimeMillis() > endTimeMillis) {
            // do some clean-up
            return;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,这并不适用于所有类型的方法。