我正在使用netty的FixedChannelPool来维护并发连接。由于多个线程将访问通道池,我想知道操作acquire()和release(通道)是否是线程安全的?
TIA
答案 0 :(得分:0)
FixedChannelPool中有关于此问题的评论:
// There is no need to worry about synchronization as everything that modified the queue or counts is done by the above EventExecutor.
但我认为这不是线程安全的,因为可以将connect promise添加到任何eventloop线程的taskQueue中。如果相同键的连接承诺添加到两个不同的eventloop的taskQueue中,当它们由eventloop执行时,这将导致非线程安全的情况,这意味着如果你将最大通道数设置为1,如果你调用同时获取,您可以创建2个频道。
请指出我是否在理解这些逻辑时犯了错误。