并发编程:ThreadLocal

Posted

tags:

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

概念

  线程局部变量,是一种多线程间并发访问变量的解决方案。与其synchonized等加锁的方式不同,ThreadLocal完全不提供锁,而使用以空间换时间的手段,为每个线程提供变量的独立副本,以保障线程安全。

 从性能上说,ThreadLocal不具有绝对的优势,在并发不是很高的时候,加锁的性能会更好,但作为一套与锁完全无关的线程安全解决方案,在高并发量或竞争激烈的场景,使用ThreadLocal可以在一定程度上减少锁竞争。


代码

public class Demo1 {
	public static ThreadLocal<String> th = new ThreadLocal<String>();
	
	public void setTh(String value) {
		th.set(value);
	}
	
	public void getTh() {
		System.out.println(Thread.currentThread().getName() + " : " + this.th.get());
	}
	
	public static void main(String[] args) {
		final Demo1 demo1 = new Demo1();
		Thread t1 = new Thread(new Runnable() {
			@Override
			public void run() {
				demo1.setTh("zhangsan");
				demo1.getTh();
			}
		}, "t1");
		
		Thread t2 = new Thread(new Runnable() {
			@Override
			public void run() {
				demo1.getTh();
			}
		}, "t2");
		
		t1.start();
		t2.start();
	}
}

效果:

    技术分享

本文出自 “我爱大金子” 博客,请务必保留此出处http://1754966750.blog.51cto.com/7455444/1908552

以上是关于并发编程:ThreadLocal的主要内容,如果未能解决你的问题,请参考以下文章

Java并发编程:深入剖析ThreadLocal

转:Java并发编程:深入剖析ThreadLocal

并发编程系列之ThreadLocal实现原理

Java并发编程:深入剖析ThreadLocal

Java并发编程:深入剖析ThreadLocal

Java并发编程:深入剖析ThreadLocal