码迷,mamicode.com
首页 > 其他好文 > 详细

ThreadLocal

时间:2019-01-13 19:02:51      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:code   vat   ati   src   out   his   一个   get   adl   

ThreadLocal的基本含义

ThreadLocal代表线程局部变量,就是为每一个使用该变量的线程都提供一个变量值的副本,使每一个线程都可以独立地改变自己的副本,而不会和其它线程副本冲突。从线程的角度看,就好像每一个线程都完全拥有该变量一样。

下面是它的用法示例:

class Account {
    private ThreadLocal<String> name = new ThreadLocal<>();

    public Account(String string) {
        this.name.set(string);
    }

    public String getName() {
        return name.get();
    }

    public void setName(String string) {
        name.set(string);
    }
}

class MyTest extends Thread {
    private Account account;

    public MyTest(Account account, String name) {
        super(name);
        this.account = account;
    }

    public void run() {
        for (int i=0;i<5;i++) {
            if (i == 2) {
                account.setName(getName());
            }
            System.out.println(account.getName() + "账户的i的值:" + i);
        }
    }
}
public class ThreadLocalTest {
    public static void main(String[] args) {
        Account at = new Account("线程Main");
        //main线程中thradlocal中的变量值
        System.out.println(at.getName());

        new MyTest(at, "线程甲").start();
        new MyTest(at, "线程乙").start();
    }
}

运行结果如下:

线程Main
null账户的i的值:0
null账户的i的值:1
线程甲账户的i的值:2
线程甲账户的i的值:3
线程甲账户的i的值:4
null账户的i的值:0
null账户的i的值:1
线程乙账户的i的值:2
线程乙账户的i的值:3
线程乙账户的i的值:4

上面程序中变量的关系如下:

技术分享图片

ThreadLocal源码分析

.....

ThreadLocal

标签:code   vat   ati   src   out   his   一个   get   adl   

原文地址:https://www.cnblogs.com/sqmax/p/10263317.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!