码迷,mamicode.com
首页 > 其他好文 > 详细

guava-retrying 源码解析(阻塞策略详解)

时间:2019-02-24 13:43:35      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:class   link   dsl   策略   color   com   reads   eps   线程   

这是一种策略,用于决定重试者应如何在重试尝试之间进行阻止。通常这只是一个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 源码解析(阻塞策略详解)

标签:class   link   dsl   策略   color   com   reads   eps   线程   

原文地址:https://www.cnblogs.com/shenqidu/p/10425785.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!