【问题标题】:Java: Netty and multithreaded Invoker (Command Pattern)Java:Netty 和多线程调用程序(命令模式)
【发布时间】:2018-02-01 14:28:40
【问题描述】:
我目前正在使用Netty 和Command Pattern 开发服务器。在调用程序的实现过程中,我想到了使用多个线程来实现它,以确保较高的命令执行性能。
但是,我开始怀疑 Netty 是否有必要这样做,因为 Netty 会自行创建多个线程。所以现在我的问题是:如果我将线程安全的调用程序对象传递给 Netty 处理程序并从那里调用 invoke() 方法,调用程序是否已经是多线程的?如果是这种情况,这是一种好的做法还是我应该创建自己的调用程序线程?
感谢您的帮助!
【问题讨论】:
标签:
java
multithreading
netty
command-pattern
【解决方案1】:
经过更多研究,我找到了问题的答案。如果有人遇到类似问题,我会在这里发布:
如果我将线程安全的调用程序对象传递给 Netty 处理程序并从那里调用 invoke() 方法,调用程序是否已经是多线程的?
是的,除非另有说明,否则 Netty 处理程序将建立 2 * count of cores 线程。因此,通道处理程序通常在不同的线程中执行,因此由于 netty 的性质,command.execute() 方法的简单调用已经是多线程的。
这是好的做法吗?
是的,否则会创建太多线程,而 netty 工作线程的任务将被不必要地委派。