zoukankan      html  css  js  c++  java
  • 8-20 Hystrix线程隔离参数解析及演示

    下面我们就来看几个核心参数。下面三个标红的

    设置为2,后面好演示。

    复制一下我们之前的代码

    复制到最下面改名字:threadTest

    分别都是创建5个




    切换到线程隔离

    现在我们线程里面有2个线程,但是要执行5个。报错的应该是线程池内容不够这种错误。
    运行测试方法




    线程池的最大数量设置为5

    这么设置完成后,再次执行测试方法还是原来那个错误

    它必须有个参数和它一起匹配使用alllowMaximumToDivergeFromCoreSize

    我们把它设置为true。默认值是false

    再来运行测试方法

    五次都执行了。 

    最大线程数量改成3

    再次执行


    依然报错了。因为要运行的线程是5个

    设置等待队列,比如设置为2。最大线程是3,等待队列是2,加起来就是5 。

    运行测试

    这里的错误并不是你的线程数不够,而是TimeoutException

    一共有5个线程,主线程是2个,最大可允许多1个,队列等待是2.

    出现错误的原因是因为这里我们让它休眠了800毫秒。hytrix默认的超时时间是1秒。所以我有三个线程在执行,他们三个无论是谁,都至少800毫秒,然后紧接着我们还有2个等待的,当我前三个处理完,空出来两个位置,这2个等待的才能进去执行,等待的这两个本身已经等待了800毫秒了。他们自己又要执行800毫秒,那么它至少要执行1600毫秒。也就是1秒6,所以它最后报的错误是timeoutException

    我们把休眠注释掉。理论上就应该不再报错 了。



    如果还是想休眠,那么就要把超时时间增大
    先开启下面这个

    再设置超时时间

    结束


  • 相关阅读:
    JAVA NIO之文件通道
    Java NIO之缓冲区
    LinkedList 源码分析(JDK 1.8)
    ArrayList 源码详细分析
    自己动手实现一个简单的JSON解析器
    科普:String hashCode 方法为什么选择数字31作为乘子
    LinkedHashMap 源码详细分析(JDK1.8)
    HashMap 源码详细分析(JDK1.8)
    python创建目录
    python3 内置方法 字符串转换为字典
  • 原文地址:https://www.cnblogs.com/wangjunwei/p/12815605.html
Copyright © 2011-2022 走看看