本文主要是介绍线程--(1)ThreadLocal简单使用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、概念
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是线程的局部变量,相互之间是不受影响的,所有说是线程安全的。
这篇关于线程--(1)ThreadLocal简单使用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!