码迷,mamicode.com
首页 > 编程语言 > 详细

多线程-ThreadLocal的使用

时间:2020-05-23 18:04:53      阅读:42      评论:0      收藏:0      [点我收藏+]

标签:int   volatile   空间换时间   之间   code   pre   ring   ber   oca   

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的使用

标签:int   volatile   空间换时间   之间   code   pre   ring   ber   oca   

原文地址:https://www.cnblogs.com/wanthune/p/12943628.html

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