关于java-web:每日一篇727ThreadLocal

6次阅读

共计 596 个字符,预计需要花费 2 分钟才能阅读完成。

首先要晓得什么是 ThreadLocal.
在多线程的环境中,每次进行线程切换都须要进行上下文切换,须要横跨若干办法调用十分的麻烦。
Java 规范库提供了一个非凡的 ThreadLocal,它能够在一个线程中传递同一个对象。以把ThreadLocal 看成一个全局 Map<Thread, Object>:每个线程获取ThreadLocal 变量时,总是应用 Thread 本身作为 key:

Object threadLocalValue = threadLocalMap.get(Thread.currentThread());

因而,ThreadLocal相当于给每个线程都开拓了一个独立的存储空间,各个线程的 ThreadLocal 关联的实例互不烦扰。

通过 HashCode 标识每个线程。能够打消在雷同线程应用间断结构的 ThreadLocals 的常见状况下的抵触。

private final int threadLocalHashCode = nextHashCode();

以下是 ThreadLocal 的 API:

  • set()办法,设置以后线程中变量的正本。
  • get()办法,获取 ThreadLocal在以后线程中保留的变量正本。
  • remove()办法,清空以后线程中变量的正本。
  • initialValue()是一个 protected办法,个别是用来重写的,如果在没有 set 的时候就调用 get,会调用 initialValue办法初始化内容。
正文完
 0