Jared's blog Jared's blog
首页
  • 数据结构与算法
  • 计算机网络
  • 操作系统
  • Java
  • 数据库SQL
  • 设计模式
  • 集成开发环境
  • Linux系统
  • 代码管理
  • 项目管理
  • 后端

    • 中间件
    • Spring家族
    • 服务器软件
    • 数据库
    • 搜索引擎
    • 分布式&微服务
    • 容器化
  • 前端

    • 基础
    • 模板框架
    • 组件化框架
  • 运维知识
  • 部署工具
架构与模型
  • 在线教育
  • 电商
  • 疑惑日志
  • 随笔
  • 友链
  • 书籍
  • 娱乐
  • Github (opens new window)
  • Gitee (opens new window)
  • CSDN (opens new window)

Jared H

💻🤣😜
首页
  • 数据结构与算法
  • 计算机网络
  • 操作系统
  • Java
  • 数据库SQL
  • 设计模式
  • 集成开发环境
  • Linux系统
  • 代码管理
  • 项目管理
  • 后端

    • 中间件
    • Spring家族
    • 服务器软件
    • 数据库
    • 搜索引擎
    • 分布式&微服务
    • 容器化
  • 前端

    • 基础
    • 模板框架
    • 组件化框架
  • 运维知识
  • 部署工具
架构与模型
  • 在线教育
  • 电商
  • 疑惑日志
  • 随笔
  • 友链
  • 书籍
  • 娱乐
  • Github (opens new window)
  • Gitee (opens new window)
  • CSDN (opens new window)
  • 数据结构与算法

  • 计算机网络

  • 操作系统

  • Java

    • 语言基础

    • 集合

    • 并发、多线程

      • 理论基础
      • 线程基础
      • 线程池
      • 锁
      • 并发容器
        • ThreadLocal 作用(线程本地存储)
        • ConcurrentHashMap
      • JUC并发工具类
    • JVM

    • 工具

    • IO

    • 新特性

    • http通信流程图
  • 数据库-SQL

  • 设计模式

并发容器

# 4.并发容器

  • ThreadLocal 作用(线程本地存储)
  • ConcurrentHashMap

# ThreadLocal 作用(线程本地存储)

ThreadLocal 的作用是提供线程内的局部变量,这种变量在线程的生命周期内起作用,减少同一个线内多个函数或者组件之间一些公共变量的传递的复杂度。

ThreadLocalMap(线程的一个属性)

  1. 每个线程中都有一个自己的 ThreadLocalMap 类对象,可以将线程自己的对象保持到其中,各管各的,线程可以正确的访问到自己的对象。

  2. 将一个共用的 ThreadLocal 静态实例作为 key,将不同对象的引用保存到不同线程的ThreadLocalMap 中,然后在线程执行的各处通过这个静态 ThreadLocal 实例的 get()方法取得自己线程保存的那个对象,避免了将这个对象作为参数传递的麻烦。

  3. ThreadLocalMap 其实就是线程里面的一个属性,它在 Thread 类中定义ThreadLocal.ThreadLocalMap threadLocals = null;

使用场景 最常见的 ThreadLocal 使用场景为 用来解决 数据库连接、Session 管理等。

  private static final ThreadLocal threadSession = new ThreadLocal();
  public static Session getSession() throws InfrastructureException {
      Session s = (Session) threadSession.get();
      try {
          if (s == null) {
              s = getSessionFactory().openSession();
              threadSession.set(s);
          }
      } catch (HibernateException ex) {
          throw new InfrastructureException(ex);
      }
      return s;
  }
1
2
3
4
5
6
7
8
9
10
11
12
13

# ConcurrentHashMap

上次更新: 2022/04/01, 15:14:40
锁
JUC并发工具类

← 锁 JUC并发工具类→

Theme by Vdoing Copyright © 2020-2022 Jared H
粤ICP备20046800号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×