zoukankan      html  css  js  c++  java
  • 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

    
    
  • 相关阅读:
    判断当天是周几
    九九乘法表
    js创建table表格
    tab切换-自动、点击、内容变换
    必须关注的25位知名JavaScript开发者
    静态路由
    dubbo
    SOA、SOAP、RPC
    【转】spring之任务调度
    Redis-cli命令最新总结【转】
  • 原文地址:https://www.cnblogs.com/shmilyToHu/p/6398323.html
Copyright © 2011-2022 走看看