极速赛车APP下载

如何了解和理解ThreadLocal

电脑杂谈  发布时间:2019-08-31 10:02:08  来源:网络整理

static数组和static const数组区别_threadlocal static_c# threadlocal

认识ThreadLocal类,首先看下这个类的常见方式

getMap和createMap方法,createMap里创建了一个ThreadLocalMap实例,并被线程Thread t所强引用,也就是说ThreadLocalMap的生命周期跟Thread一样长,如果线程没有销毁threadlocal staticthreadlocal static,ThreadLocalMap实例也不会被回收

[图]

void set(T value)方法,map.set(this, value),是以ThreadLocal对象为key存储了value值,第一次set,则会读取createMap方法构建ThreadLocalMap。set内部读取的set方式有改进消除的操作

[图]

极速赛车APP下载T get()方法,map。getEntry(this)可以看出,是借助ThreadLocal作为key来找到之前set进去的value对象

[图]

void remove()方法,是jdk1.5开始添加的,将当前线程局部变量的值删除,是为了迅速传递存储,不是必须读取的,因为线程结束后会手动回收线程局部变量

[图]

c# threadlocal_threadlocal static_static数组和static const数组区别

看ThreadLocal的源码可以看见,创建ThreadLocalMap的之后new Entry对象回来,这个Entry实际是继承了WeakReference类,这就表示在持有ThreadLocal对象例子的之后,是弱引用关系,这个是为了使ThreadLocal的回收不受ThreadLocalMap影响,从而在ThreadLocal被回收以后,对应的value在下一次ThreadLocalMap调用set,get,remove的之后会被清除

[图]

最后给出一个使用ThreadLocal的举例代码

/**

* 测试线程局部变量

* Created by shaowei on 2017/8/15。

*/

public class TestThreadLocal {

private static ThreadLocal<Integer> threadLocal

c# threadlocal_static数组和static const数组区别_threadlocal static

= new ThreadLocal<Integer>() {

public Integer initialValue(){

return 0;

}

};

public int getNextNum(){

threadLocal。set(threadLocal。get()+1);

return threadLocal。get();

}

c# threadlocal_static数组和static const数组区别_threadlocal static

极速赛车APP下载public static void main(String[] args){

TestThreadLocal sn = new TestThreadLocal();

new TestThread(sn)。start();

new TestThread(sn).start();

new TestThread(sn).start();

}

private static class TestThread extends Thread {

private TestThreadLocal tl;

public TestThread(TestThreadLocal tl){

static数组和static const数组区别_threadlocal static_c# threadlocal

this。tl = tl;

}

public void run(){

for(int i=0;i<5;i++){

System。out。println("Thread["+Thread。currentThread()。getName()

极速赛车APP下载+"]tl["+tl.getNextNum()+"]");

}

}

}

}

运行实例代码以后,打印结果可以看出,多个线程递增的序列数字没有混乱,说明内存程局部变量中,确实是解决了多线程并发冲突。

[图]


本文来自电脑杂谈,转载请注明本文网址:
http://www.0531mai.com/a/jisuanjixue/article-121196-1.html

    相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    极速赛车手机官网 极速赛车手机官网 极速赛车双面盘 极速赛车APP 极速赛车双面盘 极速赛车APP 极速赛车APP下载 极速赛车手机官网 极速赛车APP 极速赛车手机版下载