服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - Java教程 - 一文详解Java Netty中的Constant类

一文详解Java Netty中的Constant类

2023-05-08 01:06未知服务器之家 Java教程

目录 Constant ChannelConfig Netty中重要的Constant实现类:ChannelOption和AttributeKey ChannelOption AttributeKey 源码学习 小结 Constant Constant 和 ConstantPool 是用于表示常量的一种机制。 Constant 接口定义了常量的基本属性和方法,包括 唯一标识 ID、名

目录
  • Constant
    • ChannelConfig
  • Netty中重要的Constant实现类:ChannelOption和AttributeKey
    • ChannelOption
    • AttributeKey
    • 源码学习
  • 小结

    Constant

    • Constant 和 ConstantPool 是用于表示常量的一种机制。
    • Constant 接口定义了常量的基本属性和方法,包括唯一标识 ID、名称

    一文详解Java Netty中的Constant类

    • 但是一般通过ConstantPool进行管理

    一文详解Java Netty中的Constant类

    AttributeKey

    • 注意这是Key,它是映射到Attribute的。

    一文详解Java Netty中的Constant类

    源码学习

    • ConstantPool中的valueOf方法

    一文详解Java Netty中的Constant类

      • 第一次检测是为了避免重复创建,如果该常量已经存在,则直接返回该常量;第二次检测是为了保证多线程下的线程安全,只有当该常量不存在时才创建新的常量,如果另一个线程已经创建了该常量,则直接返回已创建的常量。
      • 如果不使用双重检测,可能会出现多个线程同时创建相同名称的常量,导致产生多个相同的常量实例。因此,使用双重检测可以避免重复创建常量,并保证在多线程环境下的线程安全。

    小结

    • Constant类是 Netty 框架提供的用于实现常量池的类,通常用于框架内部的常量定义,而不是用于业务代码的常量定义。
    • AttributeKeyChannelOption 都是 Netty 中用于为 ChannelChannelConfig 存储属性的机制,它们的主要区别在于作用的范围和使用场景。
    • ChannelOption 是一种可选配置项,它定义了 ChannelConfig 可以使用的参数。ChannelOption 可以用于配置网络协议的底层参数,例如 SO_LINGER 或 TCP_NODELAY 等。
      • 通常情况下,ChannelOption 用于设置连接参数,例如连接超时时间、Nagle 算法等。
      • ChannelOption 是针对 ChannelConfig,使用 channel.config().setOption(option, value) 方法来设置。
      • ChannelOption 适用于需要传递给 Netty 底层的配置参数。
    • AttributeKey 则是用于在 Channel 上存储一些属性,这些属性通常是业务逻辑相关的,例如登录用户、登录状态等。AttributeKey 对象是一个标识符,可以在 Channel 上存储和访问一个属性值。
      • ChannelOption 不同,AttributeKey 存储的属性是不透明的,Netty 不知道这些属性的含义,因为是自定义的。
      • AttributeKey 适用于需要在业务逻辑中存储和访问数据的场景,例如在一个 ChannelHandler 中存储和读取登录用户信息。
    • Attribute用于在Channel中存储一些自定义的数据 ,这些数据可以被Channel中的各个处理器共享和访问。

    以上就是一文详解Java Netty中的Constant类的详细内容,更多关于Netty Constant类的资料请关注其它相关文章!

    原文地址:https://juejin.cn/post/7229984415329878072

    延伸 · 阅读

    精彩推荐
    • Java教程Spring Core动态代理的实现代码

      Spring Core动态代理的实现代码

      通过JDK的Proxy方式或者CGLIB方式生成代理对象的时候,相关的拦截器已经配置到代理对象中去了,接下来通过本文给大家介绍Spring Core动态代理的相关知识...

      大头河10502022-02-22
    • Java教程详解如何使用IntelliJ IDEA新建一个Servlet项目

      详解如何使用IntelliJ IDEA新建一个Servlet项目

      这篇文章主要介绍了详解如何使用IntelliJ IDEA新建一个Servlet项目,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

      xuanm11422021-06-17
    • Java教程解决Intellij IDEA 使用Spring-boot-devTools无效的问题

      解决Intellij IDEA 使用Spring-boot-devTools无效的问题

      下面小编就为大家带来一篇解决Intellij IDEA 使用Spring-boot-devTools无效的问题。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来...

      Java之家8622020-11-27
    • Java教程详解Java分布式事务的 6 种解决方案

      详解Java分布式事务的 6 种解决方案

      在分布式系统、微服务架构大行其道的今天,服务间互相调用出现失败已经成为常态,本文侧重于其他几项,关于 2PC、3PC 传统事务,网上资料已经非常多...

      Java技术栈7422021-09-16
    • Java教程Spring IOC源码之bean的注册过程讲解

      Spring IOC源码之bean的注册过程讲解

      这篇文章主要介绍了Spring IOC源码之bean的注册过程讲解,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...

      hansmall11702021-12-29
    • Java教程Springmvc自定义类型转换器实现步骤

      Springmvc自定义类型转换器实现步骤

      这篇文章主要介绍了Springmvc自定义类型转换器实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可...

      白熊啊3402020-08-31
    • Java教程带你入门Java的数组

      带你入门Java的数组

      这篇文章主要给大家介绍了关于Java中数组的定义和使用的相关资料,,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起...

      贪玩的阿柒8692021-09-28
    • Java教程Java实现聊天机器人完善版

      Java实现聊天机器人完善版

      这篇文章主要为大家详细介绍了Java实现聊天机器人完善版,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

      KillerCodes5152021-09-26