java超时的异常抛出代码
时间: 2023-07-09 21:40:25 浏览: 91
在Java中,可以使用`ExecutorService`和`Future`接口实现超时控制。下面是一个简单的示例代码:
```java
import java.util.concurrent.*;
public class TimeoutDemo {
public static void main(String[] args) {
ExecutorService executor = Executors.newSingleThreadExecutor();
Callable<String> task = () -> {
// 模拟执行长时间的任务
Thread.sleep(5000);
return "Task completed";
};
Future<String> future = executor.submit(task);
try {
String result = future.get(3, TimeUnit.SECONDS); // 设置超时时间为3秒
System.out.println(result);
} catch (TimeoutException e) {
System.err.println("Task timed out!");
} catch (Exception e) {
System.err.println("Task interrupted!");
} finally {
future.cancel(true); // 中断任务
executor.shutdown(); // 关闭线程池
}
}
}
```
在这个示例代码中,我们创建了一个`ExecutorService`线程池,并提交了一个`Callable`任务。调用`future.get(3, TimeUnit.SECONDS)`方法设置了超时时间为3秒。如果任务在3秒内完成,则会打印出任务的结果;如果任务超时,则会抛出`TimeoutException`异常;如果任务被中断,则会抛出其他异常。无论如何,最后都需要中断任务并关闭线程池。
阅读全文