Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >FastThreadLocal

FastThreadLocal

原创
作者头像
乐事
修改于 2020-05-11 02:51:49
修改于 2020-05-11 02:51:49
33100
代码可运行
举报
文章被收录于专栏:日常笔记日常笔记
运行总次数:0
代码可运行

Netty 作为高性能框架,对 JDK 中的很多类都进行了封装了和优化,例如 Thread 类,Netty 使用了 FastThreadLocalRunnable 对所有 DefaultThreadFactory 创建出来的 Runnable 都进行了包装。包装的目的是 run 方法的不同,看代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    public void run() {
        try {
            runnable.run();
        } finally {
            FastThreadLocal.removeAll();
        }
    }

可以看到,多了一行 FastThreadLocal.removeAll(),JDK 中自带的 ThreadLocal 在线程池使用环境中,有内存泄漏的风险,很明显,Netty 为了避免这个 bug,重新进行了封装,而且这个封装线程的名字叫做 FastThreadLocalRunnable,语义很明显:快速的 ThreadLocal!意思说 JDK 自带的慢喽?那我们今天就来看看到底快在哪里?对 ThreadLocal 内存泄漏不清楚或者对 ThreadLoca 不清楚的可以移步 并发编程之 ThreadLocal 源码剖析

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
并发设计模式实战系列(7):Thread Local Storage (TLS)
今天为大家带来的是并发设计模式实战系列,第七章Thread Local Storage (TLS),废话不多说直接开始~
摘星.
2025/05/20
1030
京东二面:为什么Netty要造FastThreadLocal?
FastThreadLocal 从字面意义上来看,它是“Fast”+“ThreadLocal”的结合体,寓意为快速的 ThreadLocal。那么,问题来了,Netty 为什么要再造一个 FastThreadLocal?FastThreadLocal 运行快的原因是啥?除了快之外,它还有其他优势吗?
磊哥
2024/05/28
1670
Netty高性能FastThreadLocal原理深度剖析
目前关于FastThreadLocal的很多文章都有点老有点过时了(本文将澄清几个误区),很多文章关于FastThreadLocal介绍的也不全,希望本篇文章可以带你彻底理解FastThreadLocal!!!
田守枝
2019/07/11
2.6K0
Netty高性能FastThreadLocal原理深度剖析
FastThreadLocal 快在哪里 ?
FastThreadLocal 是 Netty 中造的一个轮子,那么为什么放着好端端的ThreadLocal不用,却要重复造轮子呢?下面是Netty官方在源码注释中给出的解释:
大忽悠爱学习
2023/10/11
2070
FastThreadLocal 快在哪里 ?
FastThreadLocal 是什么鬼?吊打 ThreadLocal 的存在!!
ThreadLocal 大家都知道是线程本地变量,今天栈长再介绍一个神器:FastThreadLocal,从字面上看就是:Fast + ThreadLocal,一个快的 ThreadLocal?这到底是什么鬼呢?
Java技术栈
2020/11/06
5860
FastThreadLocal 是什么鬼?吊打 ThreadLocal 的存在!!
netty源码分析之EventLoop中的线程FastThreadLocalThread和队列
它继承自SingleThreadEventLoop,它的超类是SingleThreadEventExecutor。而在下面你会发现NioEventLoopGroup中维护着多个SingleThreadEventExecutor。先来看下NioEventLoop和SingleThreadEventLoop、SingleThreadEventExecutor的代码。
山行AI
2020/04/07
1.3K1
netty源码分析之EventLoop中的线程FastThreadLocalThread和队列
吊打 ThreadLocal,谈谈FastThreadLocal为啥能这么快?
既然jdk已经有ThreadLocal,为何netty还要自己造个FastThreadLocal?FastThreadLocal快在哪里?
好好学java
2021/09/15
3990
Netty对ThreadLocal的升级
以上是ThreadLocal的注释,大致意思是:ThreadLocal提供了线程局部变量的能力。这些变量与普通变量的不同之处在于每个线程都有自己独立的副本变量,ThreadLocal实例通常是类中希望将状态与线程关联起来的私有静态字段(例如用户ID或者事务ID)。
早安嵩骏
2020/08/11
9930
Netty中的FastThreadLocal类技术详解
Netty是一个高性能的异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。在Netty中,FastThreadLocal是一个非常重要的类,用于提供高效的线程本地存储(Thread-Local Storage, TLS)解决方案。本文将详细介绍Netty中的FastThreadLocal类,包括其实现机制、使用场景和性能优势。
公众号:码到三十五
2024/08/22
1410
Netty中的FastThreadLocal类技术详解
ThreadLocal 与 FastThreadLocal
ThreadLocal 用于提供线程局部变量,在多线程环境可以保证各个线程里的变量独立于其它线程里的变量。也就是说 ThreadLocal 可以为每个线程创建一个【单独的变量副本】,相当于线程的 private static 类型变量
leobhao
2022/06/27
5140
Netty FastThreadLocal实践
在性能测试当中,经常会遇到实现线程安全的场景。使用 ThreadLocal 是一个非常简单且使用的解决方案。ThreadLocal 用于存储每个线程独立的变量,避免线程间共享数据带来的同步问题。然而,在高并发场景下,ThreadLocal 的性能可能会受到影响,因为它依赖于哈希表进行变量存取,存在一定的开销。而且 ThreadLocal 也有内存泄露的风险,如果对于一个性能测试服务来讲,ThreadLocal 的风险是显而易见的。
FunTester
2024/06/07
1420
Netty FastThreadLocal实践
基础篇:JAVA引用类型和ThreadLocal
平时并发编程,除了维护修改共享变量的场景,有时我们也需要为每一个线程设置一个私有的变量,进行线程隔离,java提供的ThreadLocal可以帮助我们实现,而讲到ThreadLocal则不得不讲讲java的四种引用,不同的引用类型在GC时表现是不一样的,引用类型Reference有助于我们了解如何快速回收某些对象的内存或对实例的GC控制
潜行前行
2021/06/25
4150
快手员工薪酬一览表。。
ConcurrentHashMap 是 HashMap 的线程安全版本,使用了 CAS、synchronized、volatile 来确保线程安全。
沉默王二
2024/04/26
1130
快手员工薪酬一览表。。
ThreadLocal与FastThreadLocal
ThreadLocal类通过线程封闭的方式解决线程安全,提到它,大家都会想到弱引用和内存泄漏等话题,它的get/set/remove等方法,网上有很多关于它的话题和详细介绍.这篇文章不会介绍这些内容.
书唐瑞
2022/06/02
2040
ThreadLocal与FastThreadLocal
Java并发编程之美
并发编程相比 Java 中其他知识点的学习门槛较高,从而导致很多人望而却步。但无论是职场面试,还是高并发/ 高流量系统的实现,却都离不开并发编程,于是能够真正掌握并发编程的人成为了市场迫切需求的人才。
加多
2018/09/30
1.2K0
Java并发编程之美
Netty 的 FastThreadLocal VS JAVA ThreadLocal
我们都有在源码中发现 FastThreadLocal 的身影,顾名思义,Netty 作为高性能的网络通信框架,FastThreadLocal 是比 JDK 自身的 ThreadLocal 性能更高的通信框架。FastThreadLocal 到底比 ThreadLocal 快在哪里呢?
MickyInvQ
2020/12/31
3360
netty系列之:给ThreadLocal插上梦想的翅膀,详解FastThreadLocal
JDK中的ThreadLocal可以通过get方法来获得跟当前线程绑定的值。而这些值是存储在ThreadLocal.ThreadLocalMap中的。而在ThreadLocalMap中底层的数据存储是一个Entry数组中的。
程序那些事
2022/06/01
3810
ThreadLocal
多线程访问同一个共享变量的时候容易出现并发问题,ThreadLocal是除了加锁外的一种规避多线程不安全的方法。
chenchenchen
2021/09/06
4300
ThreadLocal VS FastThreadlocal
ThreadLocal:线程局部,但更多听到是线程局部变量,所谓局部即:单个线程内变量可共享,在并发线程中见到他的概率更多,但解决的并非线程安全问题。
疯狂的KK
2020/02/19
8740
FastThreadLocal解析
但netty却重新搞了一个fastthreadlocal,从各方面对比一下两者的区别。也不得不说一下netty真不愧是款优秀框架,里面中有很多优秀类和方法值得细品
码农戏码
2021/03/23
3030
相关推荐
并发设计模式实战系列(7):Thread Local Storage (TLS)
更多 >
LV.1
这个人很懒,什么都没有留下~
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验