guava-retrying 源码解析(阻塞策略详解)
Posted shenqidu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了guava-retrying 源码解析(阻塞策略详解)相关的知识,希望对你有一定的参考价值。
这是一种策略,用于决定重试者应如何在重试尝试之间进行阻止。通常这只是一个thread.sleep(),但是如果需要的话,实现可能更复杂。
一、阻塞策略相关的类或接口
1、阻塞策略接口:BlockStrategy
底层默认使用来 Thread.sleep 完成线程阻塞,从而实现重试之间的等待{@link com.github.rholder.retry.WaitStrategy}。如果需要,实现可以更加复杂。
接口里面有一个实现方法,如下。
2、阻塞策略工厂类:BlockStrategies。
该工厂类非常简单,里面只有一个阻塞策略实现类(ThreadSleepStrategy),并且该实现类只有一个默认构造方法,因此该工厂类也就只提供了一个工厂方法用于创建ThreadSleepStrategy实例。
二、阻塞策略ThreadSleepStrategy详解
该类非常简单,只有一个方法,如下,也正是通过该方法完成了两次重试之间的阻塞:
// 阻塞逻辑是通过线程休眠实现的 @Override public void block(long sleepTime) throws InterruptedException { Thread.sleep(sleepTime); }
这样其实就可以和 WaitStrategy策略串起来了,WaitStrategy为阻塞策略提供了阻塞时间。
以上是关于guava-retrying 源码解析(阻塞策略详解)的主要内容,如果未能解决你的问题,请参考以下文章