Java Hystrix线程池队列工作不正常

Java Hystrix线程池队列工作不正常,java,multithreading,threadpool,Java,Multithreading,Threadpool,我正在使用Hystrix库处理网络调用。这就是我用于线程池配置的内容 HystrixThreadPoolProperties.Setter threadPropSetter = HystrixThreadPoolProperties.Setter(); threadPropSetter.withCoreSize(100); threadPropSetter.withMaxQueueSize(1000); 我正在使用一个通用的HytrixCommandKey和HytrixThreadPoolKe

我正在使用Hystrix库处理网络调用。这就是我用于线程池配置的内容

HystrixThreadPoolProperties.Setter threadPropSetter = HystrixThreadPoolProperties.Setter();
threadPropSetter.withCoreSize(100);
threadPropSetter.withMaxQueueSize(1000);
我正在使用一个通用的HytrixCommandKey和HytrixThreadPoolKey创建1000个HytrixCommand对象的负载。但是线程池在前100个线程得到服务后执行回退逻辑,而不是使用线程池队列。这可以通过将threadpool coreSize设置为1000来解决。但是我使用的是java,将coreSize设置为1000将产生1000个线程,这将消耗大量的系统资源


有人能提供一个解决方案,这样线程池队列就可以真正地对线程进行排队,而不是仅仅恢复到回退逻辑吗?

刚刚在我的main方法中添加了一个Thread.sleep,这样JVM就不会在创建命令并排队后终止。现在工作正常。

请发布一些代码示例,说明您是如何创建和执行命令的。这似乎是预期的行为,因为您没有获取命令的结果。@OldCurmudgeon-问题已经解决。实际上,我正在运行一个循环,从我的主方法执行1000个命令。因此,jvm在循环完成后终止。由于hystrix线程池基本上使用守护进程线程,因此在jvm终止后,队列中的线程不会被拾取。所以我在循环完成后在我的主方法中添加了一个Thread.sleep,现在排队工作正常了。