9.20. 什么是 ThreadLocal?
ThreadLocal 用于创建线程的本地变量,我们知道一个对象的所有线程会共享它的全局变量,所以这些变量不是线程安全的,我们可以使用同步技术。但是当我们不想使用同步的时候,我们可以选择 ThreadLocal 变量。
每个线程都会拥有他们自己的 Thread 变量,它们可以使用 get() / set() 方法去获取他们的默认值或者在线程内部改变他们的值。ThreadLocal 实例通常是希望它们同线程状态关联起来是 private static 属性。
简单说 ThreadLocal 就是一种以空间换时间的做法,在每个Thread里面维护了一个以开地址法实现的 ThreadLocal.ThreadLocalMap,把数据进行隔离,数据不共享,自然就没有线程安全方面的问题了。
ThreadLocal 是 Java 中的一种线程级别的变量,用于在当前线程中存储和获取数据,其他线程无法访问和修改该变量。可以将 ThreadLocal 对象看作一个容器,存放当前线程的局部变量。每个线程都有一个 ThreadLocalMap 对象,用于存储该线程的 ThreadLocal 变量。ThreadLocalMap 以 ThreadLocal 对象作为键,以 ThreadLocal 变量的值作为值。
ThreadLocal 的主要作用是提供线程安全的局部变量,在多线程并发的情况下,不同线程访问的是自己的局部变量,避免了线程安全问题的发生。常见的应用场景包括:存储当前用户信息、保存用户登录状态、数据库事务管理等。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论