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

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



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

再设置超时时间

结束


posted @ 2020-05-02 01:13  高山-景行  阅读(482)  评论(0编辑  收藏  举报