在Java中,你可以使用ExecutorService和Future来执行一段代码,并设置一个超时时间。如果在指定的时间内代码未完成,你可以继续执行下面的逻辑。
下面是一个示例代码:
import java.util.concurrent.*;
public class Main {
public static void main(String[] args) {
ExecutorService executor = Executors.newSingleThreadExecutor();
Future<?> future = executor.submit(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(6000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
try {
future.get(5, TimeUnit.SECONDS);
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
} catch (TimeoutException e) {
System.out.println("代码执行超时");
} finally {
future.cancel(true);
executor.shutdown();
}
}
}
在上述代码中,我们使用ExecutorService创建一个单线程的线程池,并通过submit方法提交一个Runnable任务。然后,我们使用future.get()方法设置超时时间为5秒,等待任务执行完成。如果任务在指定时间内未完成,将抛出TimeoutException异常。
你可以在TimeoutException的处理代码块中编写你要执行的超时时的逻辑。最后,我们调用future.cancel(true)取消任务,并调用executor.shutdown()关闭线程池。