我已经经历过了
我对RUN
poolExhaustedAction感到困惑。
如果将poolExhaustedAction设置为,RUN
并且池中没有可用线程,则请求接收器线程将继续执行流程吗?如果是这样,这是同步处理吗?
编辑:假设我有一个m子流配置,如:
Receiver
,Flow
并且Dispatcher
是1。最后poolExhaustedAction
的Receiver
和Dispatcher
是RUN
。
使用上述配置,我的问题如下:想象Flow线程池已耗尽,并且来自Receiver池的(仅一个)线程接收到来自客户端的新请求。该接收器线程将继续执行流处理还是等待?如果我正确理解,则接收器线程不会等待,因为它poolExhaustedAction
设置为RUN
。那么这不是从接收器线程的角度进行同步处理吗?那么设置asynchronous
处理策略的用途是什么?
现在,我更改了上面的配置,将Dispatcher's
poolExhaustedAction
其设置为WAIT
。上面的接收器线程会等待调度程序线程吗?我不这么认为。
请澄清我的疑问。提前致谢。
请参考以下链接,其中我已经解释了WAIT和RUN poolExhaustedAction值。
对于与RUN相关的问题。
对于异步处理策略,是的。当流线程耗尽时,请求接收器线程继续进行请求的处理。但这不是同步的。因为如果有4个接收器线程,则所有4个接收器线程可能会继续处理请求。而且它们都可能并行运行。
编辑OP的答案:因为只有一个线程正在执行处理,但这并不意味着同步。如前所述,Receiver线程仅在流线程池用尽后才启动。意味着流线程都忙于处理,在这种情况下,一个线程仍在处理中,无法接受新的处理请求。因此,接收器线程开始处理。因此,这仍然不是同步的。
希望这能回答您的问题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句