Multithreading Netty线程执行-MemoryWareThreadPoolExecutor

Multithreading Netty线程执行-MemoryWareThreadPoolExecutor,multithreading,asynchronous,event-handling,threadpool,netty,Multithreading,Asynchronous,Event Handling,Threadpool,Netty,在MemoryWareThreadPoolExecutor的文档中 根据事件执行顺序,他提到 线程X:---通道A(事件2)---通道A(事件1)-------------------------------------> 线程Y:---通道A(事件3)---通道B(事件2)---通道B(事件3)--> 线程Z:---通道B(事件1)----通道B(事件4)----通道A(事件4)--> 通道A(事件1、事件2)和通道A(事件3)如何由两个线程X、Y处理 据我所知,单个netty工作线程可以为

在MemoryWareThreadPoolExecutor的文档中

根据事件执行顺序,他提到

线程X:---通道A(事件2)---通道A(事件1)------------------------------------->

线程Y:---通道A(事件3)---通道B(事件2)---通道B(事件3)-->

线程Z:---通道B(事件1)----通道B(事件4)----通道A(事件4)-->

通道A(事件1、事件2)和通道A(事件3)如何由两个线程X、Y处理


据我所知,单个netty工作线程可以为许多客户机进行处理,但对于一个客户机,其所有事件(1、2、3)都必须由同一个工作线程处理,对吗?它是如何改变的

注意,在这种情况下,Netty Worker线程池不再处理事件。事件被移交给另一个线程池,并且不能保证任务何时执行,即使对于同一个通道也是如此。通道A可以移交分配给线程X的事件1,该事件被抢占,然后通道A移交由线程Y立即执行的事件2,之后线程X再次介入并执行事件1

然而,我同意图中线程X的时间线是奇怪的,因为它自然会从内部队列中按顺序选择任务。但是,我推测,不能保证ThreadPoolExecutor中排队的任务的顺序。队列通常是先进先出(FIFO),但也不一定是。。一旦使用ExecutorHandler,相同的“每通道线程数”可能不再成立