您的位置:首页 > 其它

线程--(1)ThreadLocal简单使用

2017-07-26 22:06 316 查看

一、概念

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

二、代码说明

package com.flx.king.it_201707;

/**
* 功能:ThreadLocal的使用
*
* @author FuLX
* @2017-7-26 下午9:07:14
*/
public class Dome_01_ThreadLocal {

// 定义一个线程局部变量
ThreadLocal<String> tl = new ThreadLocal<String>();

public void setTl(String value) {
System.out
.println(Thread.currentThread().getName() + " 线程set值" + value);
tl.set(value);

}

public void getTl() {
System.out.println(Thread.currentThread().getName() + " 拿到的值:"
+ this.tl.get());
}

public static void main(String[] args) {
final Dome_01_ThreadLocal dome = new Dome_01_ThreadLocal();

// 创建线程,命名为t1
Thread t1 = new Thread(new Runnable() {
@Override
public void run() {
dome.setTl("张三");
dome.getTl();

}
}, "t1");
// 创建线程,命名为t2
Thread t2 = new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(1000);
dome.setTl("李四");
dome.getTl();
} catch (InterruptedException e) {
e.printStackTrace();
}

}
}, "t2");

// 启动线程
t1.start();
t2.start();

}

}
代码运行结果:
t1 线程set值张三
t1 拿到的值:张三
t2 线程set值李四
t2 拿到的值:李四


三:总结

ThreadLocal是线程的局部变量,相互之间是不受影响的,所有说是线程安全的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息