Java : TimeoutException (Thread) 示例

Java 中的 TimeoutException (Java SE 23 & JDK 23) 及其示例。
您将找到大多数 TimeoutException 方法的代码示例。

注解 :

  • 本文可能使用了翻译软件以方便阅读。 另请查看英文原文

简介

阻塞操作超时时抛出异常。指定了超时的阻塞操作需要一种指示超时已发生的方式。许多此类操作可以返回一个指示超时的值;如果无法返回或不希望返回,则应声明并抛出 TimeoutException。 (机器翻译)

Class diagram

try (final var executorService = Executors.newSingleThreadExecutor()) {
    final var future = executorService.submit(() -> {
        try {
            System.out.println("task start");
            TimeUnit.SECONDS.sleep(3);

            return "abcd";
        } catch (InterruptedException e) {
            System.out.println("Interrupted!");
            return null;
        } finally {
            System.out.println("task end");
        }
    });

    TimeUnit.SECONDS.sleep(1);

    try {
        System.out.println("-- get start --");
        final var ret = future.get(1, TimeUnit.SECONDS);

        System.out.println("-- get end --");
        System.out.println("ret = " + ret);
    } catch (TimeoutException e) {
        System.out.println("TimeoutException!");
    }
}

// Result
// ↓
//task start
//-- get start --
//TimeoutException!
//task end

Constructors

TimeoutException ()

构造一个没有指定详细消息的 TimeoutException。 (机器翻译)

final var e = new TimeoutException();
System.out.println(e); // java.util.concurrent.TimeoutException

TimeoutException (String message)

使用指定的详细消息构造一个 TimeoutException。 (机器翻译)

final var e = new TimeoutException("abc");
System.out.println(e); // java.util.concurrent.TimeoutException: abc
System.out.println(e.getMessage()); // abc

Methods declared in Throwable

addSuppressed, fillInStackTrace, getCause, getLocalizedMessage, getMessage, getStackTrace, getSuppressed, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace, toString

请参阅下面的链接。


相关文章

To top of page