java.util.concurrent.RejectedExecutionException: Task
java.util.concurrent.FutureTask@3f54147b rejected from
java.util.concurrent.ThreadPoolExecutor@55407c43[Running, pool size = 10, active threads = 10, queued tasks = 0, completed tasks = 2638]
根据文档资料得到,在默认设置下,maxQueueSize的长度为-1,则使用了SynchronousQueue
* maxQueueSize BlockingQueue的最大队列大小,设为-1使用SynchronousQueue,否则使用LinkedBlockingQueue,默认值:-1
翻hystrix线程池的代码,得到如果是-1的情况下,hystrix是不进行判断队列的长度的,此时,直接交由线程池去处理。
//HystrixThreadPool.java
@Override
public boolean isQueueSpaceAvailable() {
if (queueSize <= 0) {
// we don't have a queue so we won't look for space but instead
// let the thread-pool reject or not
return true;
} else {
return thread

当Hystrix的maxQueueSize设置为-1时,使用SynchronousQueue导致任务被reject。解决异常有两种方式:调整线程池等待队列或增加工作线程数,但不建议直接增大coreSize,应修改maxSize以防止常驻线程过多。
最低0.47元/天 解锁文章

1904

被折叠的 条评论
为什么被折叠?



