CyclicBarrier 是否会在最后等待时重置自身?

Jin*_*won 2 java cyclicbarrier

我正在研究 CyclicBarrier 并编写了这个演示。

import java.util.concurrent.BrokenBarrierException;
import java.util.concurrent.CyclicBarrier;
import static java.util.concurrent.ThreadLocalRandom.current;
public class CyclicBarrierDemo {
    public static void main(final String[] args) {
        final int threads = 100;
        final CyclicBarrier barrier
            = new CyclicBarrier(threads, () -> System.out.println("tripped"));
        final int rounds = 5;
        for (int i = 0; i < threads; i++) {
            new Thread(() -> {
                    for (int j = 0; j < rounds; j++) {
                        try {
                            Thread.sleep(current().nextLong(1000L));
                            barrier.await();
                        } catch (InterruptedException | BrokenBarrierException e) {
                            e.printStackTrace(System.err);
                            return;
                        }
                    }
            }).start();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

正如我所料,程序打印出 5tripped并退出。

tripped
tripped
tripped
tripped
tripped
Run Code Online (Sandbox Code Playgroud)

我的问题是CyclicBarrier实例在最后一个await()到达时会自行重置吗?那么输出是预期的吗?我找不到任何形容词。