欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

ThreadLocal

程序员文章站 2022-07-12 20:34:46
...
ThreadLocal


一、概念

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

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

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

public class ThreadLocalDemo {

	private static ThreadLocal<String> list = new ThreadLocal<String>();
	
	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