ThreadLocal

阅读更多
ThreadLocal


一、概念

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

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

二、示例
package com.study.current.thread.day02;

public class ThreadLocalDemo {

	private static ThreadLocal list = new ThreadLocal();
	
	public void setValue(String value){
		list.set(value);
		System.out.println("放入数据:"+value);
	}
	
	public String getValue(){
		System.out.println("取出数据:"+list.get());
		return list.get();
	}
	
	/**
	 * @param args
	 */
	public static void main(String[] args) {

		final ThreadLocalDemo threadLocal = new ThreadLocalDemo();
		
		Thread t1 = new Thread(new Runnable() {
			
			public void run() {
				threadLocal.setValue("abc");
				threadLocal.getValue();
			}
		});
		
		Thread t2 = new Thread(new Runnable() {
			
			public void run() {
				try {
					Thread.sleep(2000);
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
				threadLocal.getValue();
			}
		});
		
		t1.start();
		t2.start();
	}

}



你可能感兴趣的:(thread)