|
28 | 28 | import java.util.logging.Logger; |
29 | 29 |
|
30 | 30 | /** |
31 | | - * {@link BigtableTimer} backed by a single-thread hashed wheel — same algorithm as Netty's |
32 | | - * {@code HashedWheelTimer} but with no Netty dependency. Tick = {@value #TICK_DURATION_MS} ms, |
33 | | - * {@value #TICKS_PER_WHEEL} buckets, so one full rotation is ~5 s. |
| 31 | + * {@link BigtableTimer} backed by a single-thread hashed wheel — same algorithm as Netty's {@code |
| 32 | + * HashedWheelTimer} but with no Netty dependency. Tick = {@value #TICK_DURATION_MS} ms, {@value |
| 33 | + * #TICKS_PER_WHEEL} buckets, so one full rotation is ~5 s. |
34 | 34 | * |
35 | | - * <p>Insert is O(1): the new {@link Timeout} is enqueued onto an MPSC pending queue and bucketed |
36 | | - * by the tick thread on the next tick. Cancel is O(1): a single state CAS marks the entry |
37 | | - * cancelled, and the worker unlinks it the next time the bucket is swept (so a cancelled entry |
38 | | - * holds memory for at most one wheel rotation). |
| 35 | + * <p>Insert is O(1): the new {@link Timeout} is enqueued onto an MPSC pending queue and bucketed by |
| 36 | + * the tick thread on the next tick. Cancel is O(1): a single state CAS marks the entry cancelled, |
| 37 | + * and the worker unlinks it the next time the bucket is swept (so a cancelled entry holds memory |
| 38 | + * for at most one wheel rotation). |
39 | 39 | * |
40 | | - * <p>The worker thread only advances the wheel and hops fires to the caller-supplied |
41 | | - * {@link Executor}; user code never runs on the tick thread. |
| 40 | + * <p>The worker thread only advances the wheel and hops fires to the caller-supplied {@link |
| 41 | + * Executor}; user code never runs on the tick thread. |
42 | 42 | */ |
43 | 43 | public final class HashedWheelTimer implements BigtableTimer { |
44 | 44 | private static final Logger LOG = Logger.getLogger(HashedWheelTimer.class.getName()); |
|
0 commit comments