ThreadLocal 是一种解决多线程安全的一种解决方案
传统的多线程访问,对于一个对象是非线程安全的,在多线程的环境中,一般都是采用synchronized进行线程同步的,从而达到线程安全的。
但是传统方式的采用同步方式,无非会造成降低系统的并发性,从而降低系统性能缺点。
ThreadLocal采用的方式是为每一个线程创建一个变量的副本,从而各个线程间拥有自己的变量副本,进而对自己的变量副本操作不会影响到其他的线程。
一般使用ThreadLocal都会做如下处理:
1、创建一个ThreadLocal的对象,1.5以后支持泛型操作
private static ThreadLocal<Integer> seqNum = new ThreadLocal<Integer>()
2、将Integer型的对象set到ThreadLocal 对象中
seqNum.set(int);
3、取出int
seqNum.get();
看了一遍文章关于ThreadLocal的实现:
public class SimpleThreadLocal { private Map valueMap = Collections.synchronizedMap(new HashMap()); public void set(Object newValue) { //①键为线程对象,值为本线程的变量副本 valueMap.put(Thread.currentThread(), newValue); } public Object get() { Thread currentThread = Thread.currentThread(); //②返回本线程对应的变量 Object o = valueMap.get(currentThread); //③如果在Map中不存在,放到Map中保存起来 if (o == null && !valueMap.containsKey(currentThread)) { o = initialValue(); valueMap.put(currentThread, o); } return o; } public void remove() { valueMap.remove(Thread.currentThread()); } public Object initialValue() { return null; } }
相关推荐
理解ThreadLocal 理解ThreadLocal 理解ThreadLocal 理解ThreadLocal
ThreadLocal应用示例及理解,这个写了相关的示例,可以参考一下。
ThreadLocal深度理解
正确理解ThreadLocal.pdf
ThreadLocal的简单理解.doc
ThreadLocal
ThreadLocal入门教程。 讲解了线程安全和ThreadLocal的使用的基本知识。
ThreadLocal为解决多线程程序的并发问题提供了一种新的思路。使用这个工具类可以很简洁地编写出优美的多线程程序,ThreadLocal并不是一个Thread,而是Thread的局部变量
学习ThreadLocal,了解其中的原理,以及学习其中的优点!避免坑点!!
DbUTils中用ThreadLocal类
NULL 博文链接:https://aty.iteye.com/blog/1913734
主要介绍ThreadLocal的原理,实例分析以及注意事项
Synchronized与ThreadLocal
ThreadLocal的几种误区ThreadLocal的几种误区ThreadLocal的几种误区
java 简单的ThreadLocal示例
主要介绍了Android 中ThreadLocal的深入理解的相关资料,希望通过本文能帮助到大家,让大家理解应用ThreadLocal,需要的朋友可以参考下
Java中ThreadLocal工具类(解决多线程程序中并发问题的一种新思路,主要为参数的拷贝问题),感兴趣的话可以查看博文,博文地址:http://blog.csdn.net/otengyue/article/details/38459327
本例以序列号生成的程序为例,展示ThreadLocal的使用