gpt4 book ai didi

java - Netty,如何通过所有处理程序存储数据

转载 作者:行者123 更新时间:2023-12-02 11:35:19 24 4
gpt4 key购买 nike

我是 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 注释该类

变量的访问有什么不同吗?

非常感谢!!

问候。

最佳答案

这更多的是一个 Java 问题,而不是特定于 Netty 的问题。由于 llamadas 是静态类成员,因此无论您是否使 ChannelHandler @Sharable 都需要同步,即您是否有 channel 处理程序的多个实例或只有一,您有一个要附加到的 ArrayList

通常,@Sharable 与 channel “无状态”的处理程序一起使用,即不维护任何特定于 channel 的状态,因此您可以避免使用处理程序的单个实例跨管道。看这个tutorial对此有一个很好的解释。

关于java - Netty,如何通过所有处理程序存储数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48980848/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com