Java 在netty中,可以将一个共享的ByteBuf传递给另一个线程吗?

Java 在netty中,可以将一个共享的ByteBuf传递给另一个线程吗?,java,multithreading,netty,Java,Multithreading,Netty,我用的是netty 4.10beta6 在通道A中,我通过重写channelRead()(默认情况下使用池化的buf分配器)来读取ByteBuf,通过将buf传递给channelB.write(buf),使用并释放通道B中的buf,其中通道B的eventloop位于不同的线程中。这样行吗 我之所以问这个问题,是因为我部分阅读了PooledByteBufAllocator的源代码,它使用了线程本地缓存,似乎不应该跨线程工作 我做了一些小测试,它工作正常,希望确保它是否能长期运行。是的,在线程之间传

我用的是netty 4.10beta6

在通道A中,我通过重写
channelRead()
(默认情况下使用池化的buf分配器)来读取
ByteBuf
,通过将buf传递给
channelB.write(buf)
,使用并释放通道B中的buf,其中通道B的eventloop位于不同的线程中。这样行吗

我之所以问这个问题,是因为我部分阅读了
PooledByteBufAllocator
的源代码,它使用了线程本地缓存,似乎不应该跨线程工作


我做了一些小测试,它工作正常,希望确保它是否能长期运行。

是的,在线程之间传递也可以,只要不同时调用读/写/集/获取等方法。

嗨,@Norman Maurer,在我的例子中,我传递由共享池分配器从当前线程创建的由tebuf填充的内容,然后在另一个线程中读取/关闭bytebuf。netty有时抛出异常:
io.netty.util.IllegalReferenceCountException:refCnt:0
。这意味着池分配程序给我一个已经释放的bytebuf。我怎样才能解决这个问题?