Skip to content

awaitility使用

Github Getting Started

Github Usage

Awaitility 是一个 Java 库,用于在编写异步代码时简化等待条件成立的过程。它提供了一种流畅的 API 来等待直到某个条件为真,而无需编写复杂的轮询逻辑或处理线程中断。这对于测试异步代码或等待外部系统响应时特别有用。

awaitility的详细用法请参考 链接

maven配置引用awaitility

xml
<dependency>
    <groupId>org.awaitility</groupId>
    <artifactId>awaitility</artifactId>
    <version>4.1.1</version>
    <scope>test</scope>
</dependency>

示例:

java
long milliseconds = 5000;

//region 测试等待成功

AtomicInteger atomicInteger = new AtomicInteger();
AtomicInteger finalAtomicInteger1 = atomicInteger;
Thread thread = new Thread(() -> {
    try {
        Thread.sleep(3000);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }

    finalAtomicInteger1.incrementAndGet();
});
thread.start();

// 最长等待5秒
// 每1秒检查一次条件是否满足
Awaitility.await().atMost(milliseconds, TimeUnit.MILLISECONDS).pollInterval(Duration.ofSeconds(1)).until(() -> {
    System.out.println(new Date());
    return finalAtomicInteger1.get() >= 1;
});

//endregion

示例中使用awaitility等待return finalAtomicInteger1.get() >= 1;条件满足才继续执行代码,如果等待超过5秒条件仍然未满足则抛出异常。