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

来源:互联网 发布:js防水怎么样 编辑:程序博客网 时间:2024/06/04 19:31

一、概念

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();// 创建线程,命名为t1Thread t1 = new Thread(new Runnable() {@Overridepublic void run() {dome.setTl("张三");dome.getTl();}}, "t1");// 创建线程,命名为t2Thread t2 = new Thread(new Runnable() {@Overridepublic 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是线程的局部变量,相互之间是不受影响的,所有说是线程安全的。



阅读全文
0 0
原创粉丝点击