• ThreaLocal


    ThreadLocal概念:线程局部变量,是一种多线程间并发访问变量的解决方案。与其synchronized等加锁的方式不同,ThreadLocal完全不提供锁,而使用以空间换时间的手段,为每个线程提供变量的独立副本,以保障线程安全。

    从性能上说,ThreadLocal不具有绝对的优势,在并发不是很高的时候,加锁的性能会更好,但作为一套与锁完全五官的线程安全解决方案,在高并发量或者竞争激烈的场景,使用ThreadLocal可以在一定程度上减少锁的竞争。

    同样,看一段小demo:

    public class ConnThreadLocal {
    public static ThreadLocal<String> th = new ThreadLocal<String>();

    public void setTh(String value) {
    th.set(value);
    }

    public void getTh() {
    System.out.println(Thread.currentThread().getName() + ":" + this.th.get());
    }

    public static void main(String[] args) {
    final ConnThreadLocal ct = new ConnThreadLocal();
    Thread t1 = new Thread(new Runnable() {
    @Override
    public void run() {
    ct.setTh("张三");
    ct.getTh();
    }
    }, "t1");
    Thread t2 = new Thread(new Runnable() {
    @Override
    public void run() {
    try {
    Thread.sleep(1000);
    ct.getTh();
    } catch (InterruptedException e) {
    e.printStackTrace();
    }
    }
    }, "t2");
    t1.start();
    t2.start();
    }
    }

    这段代码的运行结果是:

    也就是说,每一个线程里面,都单独使用了ThreaLocal

    
    
  • 相关阅读:
    排序算法——选择排序
    poj1906
    poj1496
    poj1244
    poj1183
    poj1806
    !!!舒尔茨自律神经训练法
    Google Analytics的能与不能
    乔布斯最伟大的贡献是什么
    冥想呼吸
  • 原文地址:https://www.cnblogs.com/shmilyToHu/p/6398323.html
Copyright © 2020-2023  润新知