多线程-ThreadLocal的使用

Posted wanthune

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多线程-ThreadLocal的使用相关的知识,希望对你有一定的参考价值。

ThreadLocal: 每个线程只能修改本线程在ThreadLocal中的值,各个线程之间互不干扰。

/**
 * ThreadLocal线程局部变量
 *
 * ThreadLocal是使用空间换时间,synchronized是使用时间换空间
 * 比如在hibernate中session就存在与ThreadLocal中,避免synchronized的使用
 *
 * 运行下面的程序,理解ThreadLocal
 * 
 * @author 马士兵
 */
package yxxy.c_022;

import java.util.concurrent.TimeUnit;

public class ThreadLocal2 {
	//volatile static Person p = new Person();
	static ThreadLocal<Person> tl = new ThreadLocal<>();
	
	public static void main(String[] args) {
				
		new Thread(()->{
			try {
				TimeUnit.SECONDS.sleep(2);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
			
			System.out.println(tl.get());// 输出null
		}).start();
		
		new Thread(()->{
			try {
				TimeUnit.SECONDS.sleep(1);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
			tl.set(new Person());
		}).start(); 
	}
	
	static class Person {
		String name = "zhangsan";
	}
}

以上是关于多线程-ThreadLocal的使用的主要内容,如果未能解决你的问题,请参考以下文章

多线程

Java多线程10:ThreadLocal的作用及使用

JAVA多线程提高三:线程范围内共享变量&ThreadLocal

Java多线程之ThreadLocal总结2

多线程-ThreadLocal

多线程学习 ThreadLocal的使用。