`
esehunter
  • 浏览: 4617 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

粗略讲一下ThreadLocal的使用

阅读更多
晚上九点四十了,离下班还有二十分钟。桌上咖啡已尽,窗外夜色阑珊。其实我也不是经常加班的,今天突然神志不清的坐到十点,与君共勉。不过发现,现在白天整天开会确定requirement,也只有晚上的时间能稍微干点事情了。

闲话不说了,剩下的时间也懒得继续墨迹,想到什么就写点什么把。

其实我的基础是非常松散的,用所谓高手们的话来说,就是经不起推敲,活脱脱小菜鸟一个。用了这么多年java,其实对于多线程的原理心中还是没什么底的。不过好在会用就成,我也从来不打算出个书把自己脑袋印封面上。咱走的是非常规技术路线。

不过很多人不知道ThreadLocal,这是不能被原谅的。

关于ThreadLocal的基本概念和使用网上已经铺天盖地了,这里也不赘述,没啥意思。真想深入的,去看看Spring的底层实现,就可见一斑了。简单的说,ThreadLocal为解决多线程程序的并发问题提供了一种新的思路。使用这个工具类可以很简洁地编写出优美的多线程程序。事实上,ThreadLocal并不是一个“本地线程”,而可以理解为Thread的一个局部变量。在多线程程序运行的时候,每个线程都为同一个访问对象生成一个副本,这样就有效的阻止了线程间的相互影响,提高了并发性。再简单点说,其实这就是典型的拿空间换时间的方式。而多线程通常的另一种解决方式,则反过来,是典型的时间换空间了。怎么取舍,任君采撷。在使用时我们只需通过简单的get set方法就能轻松实现多线程的并发访问了。

另外,ThreadLocal还支持泛型,这是一个相当令人激赏的特性。我们可以用它写出各种精彩的程序,有时,它和java的反射也结合的很不错。

本来想来个例子的,不过,没车了。以后补上吧。下班快乐。
分享到:
评论

相关推荐

    ThreadLocal应用示例及理解

    ### ThreadLocal基本使用 创建ThreadLocal实例时,通常会定义一个泛型参数,代表该线程局部变量的类型。例如: ```java ThreadLocal<String> threadLocal = new ThreadLocal(); ``` ### 设置和获取值 在...

    java中ThreadLocal类的使用

    下面我们将深入探讨`ThreadLocal`的工作原理、使用场景以及常见误区。 `ThreadLocal`类的主要方法有以下几个: 1. `void set(T value)`:设置当前线程的线程局部变量的值。 2. `T get()`:返回当前线程的线程局部...

    ThreadLocal

    ThreadLocal通常被用来解决线程共享数据时可能出现的并发问题,避免了使用synchronized关键字进行同步控制的复杂性。 在Java中,ThreadLocal的工作原理是为每个线程创建一个单独的存储空间,每个线程可以独立地读写...

    Spring事务处理-ThreadLocal的使用

    本篇文章将聚焦于Spring事务处理中ThreadLocal的使用,以及如何通过源码理解和应用这个工具。 首先,了解Spring事务管理的基本概念。在多线程环境中,事务管理是至关重要的,它负责确保一组数据库操作要么全部成功...

    ThreadLocal简单Demo

    4. **减少锁的使用**: 当多个线程需要共享同一资源,但每个线程只需要读取自己相关的数据时,`ThreadLocal`可以避免锁的使用,提升效率。 **注意事项** - 使用`ThreadLocal`后,应确保及时清理不再使用的变量,...

    使用ThreadLocal管理“session”数据

    ThreadLocal内部使用了一个ThreadLocalMap,它是一个基于ThreadLocal实例作为键,值为用户存储对象的弱引用表。每个线程都有一个这样的ThreadLocalMap,保证了线程间数据的隔离。 6. **工具支持** 在实际开发中,...

    从ThreadLocal的使用到Spring的事务管理

    本文将深入探讨ThreadLocal的使用以及Spring框架中的事务管理,这两个主题都是Java开发人员必须掌握的关键技能。 首先,让我们了解ThreadLocal。ThreadLocal是Java提供的一种线程绑定变量的工具类,它允许我们在一...

    Java中ThreadLocal的设计与使用

    理解ThreadLocal的工作原理和使用方法对于编写高效、安全的多线程程序至关重要。 ### ThreadLocal简介 ThreadLocal并非一个线程对象,而是一个线程局部变量的容器。每个线程都有自己的ThreadLocal实例,它们各自...

    ThreadLocal的几种误区

    理论上来讲,每个线程确实拥有自己的ThreadLocal副本。但在实际应用服务器环境中,由于线程池的存在,多个用户请求可能会复用同一个线程。因此,开发者在使用ThreadLocal时必须小心,避免在ThreadLocal中存储长期...

    ThreadLocal的使用

    NULL 博文链接:https://xuranpaoche.iteye.com/blog/1514071

    java事务 - threadlocal

    总结一下,Java事务和ThreadLocal都是Java多线程编程中不可或缺的工具。事务用于保证数据库操作的原子性和一致性,ThreadLocal则为每个线程提供了独立的数据空间,避免了线程间的数据冲突。理解并熟练运用这两个概念...

    JDK的ThreadLocal理解(一)使用和测试

    **标题:“JDK的ThreadLocal理解(一)使用和测试”** **正文:** ThreadLocal是Java中的一个非常重要的线程安全工具类,它在多线程编程中扮演着独特的角色。通过创建ThreadLocal实例,我们可以为每个线程提供一个...

    ThreadLocal 内存泄露的实例分析1

    在描述的案例中,`LeakingServlet` 是一个使用了 `ThreadLocal` 的 Servlet。`ThreadLocal` 是 Java 中用于在单个线程内存储线程局部变量的类,每个线程都有自己的副本,不会互相干扰。`MyThreadLocal` 是 `...

    java 简单的ThreadLocal示例

    **ThreadLocal的使用方法:** 1. **创建ThreadLocal实例:** 首先,你需要创建一个ThreadLocal类型的实例,这将作为你在每个线程中存储值的容器。 ```java ThreadLocal<String> threadLocal = new ThreadLocal();...

    threadLocal

    因此,正确使用`ThreadLocal`的一个关键点是在线程结束或不再使用ThreadLocal时,及时调用`remove()`。 工具应用: 在实际开发中,ThreadLocal常用于缓存线程相关的数据,如数据库连接、事务管理、请求上下文等。...

    正确理解ThreadLocal.pdf

    `ThreadLocal`是Java平台提供的一种线程局部变量的解决方案,它为每一个使用该变量的线程都提供了独立的变量副本,使得每一个线程都可以独立地改变自己的副本,而不会影响其它线程所对应的副本。这不同于普通的静态...

    理解ThreadLocal

    理解ThreadLocal 理解ThreadLocal 理解ThreadLocal 理解ThreadLocal

    java中ThreadLocal详解

    需要注意的是,尽管使用了弱引用来避免内存泄漏,但仍需谨慎管理`ThreadLocal`实例的生命周期,确保及时释放不再使用的资源。此外,`ThreadLocalMap`通过开放地址法来解决哈希冲突,进一步提高了性能并减少了内存...

Global site tag (gtag.js) - Google Analytics