zoukankan      html  css  js  c++  java
  • ThreadLocal

    Java中的ThreadLocal类允许我们创建只能被同一个线程读写的变量。因此,如果一段代码含有一个ThreadLocal变量的引用,即使两个线程同时执行这段代码,它们也无法访问到对方的ThreadLocal变量。

    一旦创建了一个ThreadLocal变量,你可以通过如下代码设置某个需要保存的值:

    1 myThreadLocal.set("A thread local value”);

    可以通过下面方法读取保存在ThreadLocal变量中的值:

    1 String threadLocalValue = (String) myThreadLocal.get();

    get()方法返回一个Object对象,set()对象需要传入一个Object类型的参数。

    1. public void set(T value) {  
    2.     // 获取当前线程对象  
    3.     Thread t = Thread.currentThread();  
    4.     // 获取当前线程本地变量Map  
    5.     ThreadLocalMap map = getMap(t);  
    6.     // map不为空  
    7.     if (map != null)  
    8.         // 存值  
    9.         map.set(this, value);  
    10.     else  
    11.         // 创建一个当前线程本地变量Map  
    12.         createMap(t, value);  
    13. }  

    每个线程 可以维持多个自己线程内部的threadlocal成员 每个成员维持一个map

  • 相关阅读:
    java 单向链表实现
    super、this
    Java程序员们最常犯的10个错误
    Codeforces-1323D Present
    Codeforces-1323E Instant Noodles
    Codeforces-1312E Array Shrinking
    Codeforces-1327D Infinite Path
    Codeforces-1326D Prefix-Suffix Palindrome
    HDU-5885 XM Reserves
    NTT(快速数论变换)用到的各种素数及原根
  • 原文地址:https://www.cnblogs.com/lnas01/p/5990519.html
Copyright © 2011-2022 走看看