disruptor源码阅读与分析----等待策略

在前一篇文中我们阅读了RingBuffer和Sequence,测试例子中我们使用的等待策略是BlockingWaitStrategy,在本文中我们重点看下都有哪些等待策略,他们都有什么不同,这里就不贴代码了。

1,BlockingWaitStrategy:通过线程阻塞的方式,等待生产者唤醒,被唤醒后,再循环检查依赖的sequence是否已经消费。

2,BusySpinWaitStrategy:线程一直自旋等待,可能比较耗cpu

3,LiteBlockingWaitStrategy:线程阻塞等待生产者唤醒,与BlockingWaitStrategy相比,区别在signalNeeded.getAndSet,如果两个线程同时访问一个访问waitfor,一个访问signalAll时,可以减少lock加锁次数.

4,LiteTimeoutBlockingWaitStrategy:与LiteBlockingWaitStrategy相比,设置了阻塞时间,超过时间后抛异常。

5,PhasedBackoffWaitStrategy:根据时间参数和传入的等待策略来决定使用哪种等待策略

6,TimeoutBlockingWaitStrategy:相对于BlockingWaitStrategy来说,设置了等待时间,超过后抛异常

7,YieldingWaitStrategy:尝试100次,然后Thread.yield()让出cpu





猜你喜欢

转载自blog.csdn.net/chengzhang1989/article/details/80258335