Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 配置Wildfly ManagedExecutorService行为_Java_Jakarta Ee_Concurrency_Wildfly - Fatal编程技术网

Java 配置Wildfly ManagedExecutorService行为

Java 配置Wildfly ManagedExecutorService行为,java,jakarta-ee,concurrency,wildfly,Java,Jakarta Ee,Concurrency,Wildfly,Wildfly ManagedExecutorService的行为非常不直观,我怀疑它的行为是一个bug(Wildfly 9,不管它值多少):它产生核心大小线程,然后用它来处理队列大小'd队列。即使设置了max size,也不会产生额外的线程,无论队列中有多少工作 也就是说,直到队列完全满,此时最多会生成max size线程,但由于此时队列已满,新生成的线程通常无法在作业因队列超时而丢失之前完成 相反,正常的执行器服务倾向于生成max(max size,available work)线程,在其他

Wildfly ManagedExecutorService的行为非常不直观,我怀疑它的行为是一个bug(Wildfly 9,不管它值多少):它产生
核心大小
线程,然后用它来处理
队列大小
'd队列。即使设置了
max size
,也不会产生额外的线程,无论队列中有多少工作

也就是说,直到队列完全满,此时最多会生成
max size
线程,但由于此时队列已满,新生成的线程通常无法在作业因队列超时而丢失之前完成

相反,正常的执行器服务倾向于生成
max(max size,available work)
线程,在其他工作中,如果没有达到max size,如果有额外的可用工作,它们会生成额外的线程


但是我无法配置
托管执行器服务
子系统来提供这样的行为(同时仍然有作业队列)。唯一的选择似乎是将核心大小设置为最大大小,这是愚蠢的。有什么提示吗?

这可能与
ThreadPoolExecutor
的工作方式有关:如果corePoolSize或更多线程正在运行,则执行者总是喜欢将请求排队,而不是添加新线程。如果请求无法排队,则会创建一个新线程,除非该线程将超过maximumPoolSize,在这种情况下,任务将被拒绝。是的,我正试图改变这种行为。如果是纯Java,我可以很容易地将ThreadPoolExecutor子类化以获得我想要的行为,但我猜这在本例中是不可能的。