guava-retrying 源码解析(阻塞策略详解)
2024-10-14 18:34:34
这是一种策略,用于决定重试者应如何在重试尝试之间进行阻止。通常这只是一个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为阻塞策略提供了阻塞时间。
最新文章
- Atitit webservice的发现机制 discover机制
- 运行tomcat8w.exe未安装指定的服务
- Centos6.5下的Hadoop安装
- 调用SAP函数创建寄售退货订单的时候报错:业务对象 BUS2032 是销售订单,销售凭证类别 H 是退货。
- C# 常用加密方式
- 让复杂Json数据和对象自由转换 --- Gson
- ASP.NET 分页控件
- Linux学习之awk命令
- ProcessBuilder 和 Runtime(转)
- The Hardest Problem Ever(字符串)
- IOS-TextField功能方法详解
- redhat6.3已安装was6.1你可以不弹出安装程序
- 浅谈Log4net在项目中如何记录日志
- 互联网同步yum服务器阿里云 reposync createrepo
- 在AJAX里 使用【 JSON 】 返回数据类型 实现简单的下拉菜单数据
- iOS 申请distribution证书, 公钥,私钥
- 省市区三级联动picker-view-微信小程序
- hive cst 时间转换
- mysql系统变量查询
- thinkphp学习3-模板与视图