This class is similar in many ways to a CountDownLatch(1).
The main difference is that instances of this specialized latch implementation are much quicker to allocate and
construct. Each instance also takes up less memory on the heap, and enqueueing wait nodes on the latch is faster.
There are two reasons why this class is faster to construct: 1. it performs no volatile write during its
construction, and 2. it does not need to allocate an internal Sync object, like CountDownLatch does.