Java settimeout如何避免超时异常

   2024-10-08 2450
核心提示:在Java中没有类似JavaScript中的setTimeout函数来设置超时时间。但是可以使用ExecutorService和Future来实现类似的功能,避免超

在Java中没有类似JavaScript中的setTimeout函数来设置超时时间。但是可以使用ExecutorService和Future来实现类似的功能,避免超时异常。

下面是一个示例代码:

import java.util.concurrent.*;public class TimeoutExample {    public static void main(String[] args) {        ExecutorService executor = Executors.newSingleThreadExecutor();        Future<String> future = executor.submit(() -> {            // 这里执行需要超时控制的任务            try {                Thread.sleep(5000); // 模拟一个长时间执行的任务                return "Task completed";            } catch (InterruptedException e) {                return "Task interrupted";            }        });        try {            String result = future.get(3, TimeUnit.SECONDS); // 设置超时时间为3秒            System.out.println(result);        } catch (TimeoutException e) {            future.cancel(true); // 超时时取消任务            System.out.println("Task timed out");        } catch (InterruptedException | ExecutionException e) {            e.printStackTrace();        }        executor.shutdown();    }}

在上面的示例中,通过ExecutorService的submit方法提交一个任务,然后使用future.get方法设置超时时间为3秒。如果任务在3秒内没有完成,将会抛出TimeoutException异常,并取消任务执行。如果任务在超时时间内完成,则会返回结果。

 
举报打赏
 
更多>同类维修大全
推荐图文
推荐维修大全
点击排行

网站首页  |  关于我们  |  联系方式网站留言    |  赣ICP备2021007278号