[英]Netty, how to store data through all handlers
我是Netty的新手,我对将客户端接收的数据存储在服务器中有疑问,以便以后由任何客户端咨询。
如果我将管道定义如下:
ch.pipeline().addLast(new ServerHandler());
我可以在ServerHandler中定义如下的类变量吗?
public class ServerHandler extends ChannelInboundHandlerAdapter {
private static final ArrayList<String> llamadas = new ArrayList<String>();
....
使用后,所有客户都这样吗?
synchronized(llamadas) {
llamadas.add(mensaje);
}
我也想问一下是否仅创建一个ServerHandler实例是否有区别?
ch.pipeline().addLast(serverHandler);
我用@Sharable注解课程
对变量的访问有什么不同吗?
非常感谢!!
问候。
这不仅仅是Netty专有的,而是Java问题。 由于llamadas
是静态类成员,因此无论是否使ChannelHandler @Sharable
都需要进行同步,即是否具有多个通道处理程序实例或只有一个实例,您只需要附加一个ArrayList
。
通常, @Sharable
与带有无状态wrt通道的处理程序@Sharable
使用,即不维护任何特定于通道的状态,因此您可以跨管道使用单个处理程序实例。 有关详细说明,请参见本教程 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.