8.8 ThreadLocal

简介

概念:1.使用ThreadLocal维护变量会为每个使用该变量的线程提供独立的变量副本,每个线程独立改变副本不会影响其它线程的副本;

           2.ThreadLocal为解决多线程程序的并发问题提供了一种新的思路,简洁优美;


方法

void set(T value):设置当前线程的线程局部变量的值;

T get():该方法返回当前线程所对应的线程局部变量;

void remove():将当前线程局部变量的值删除,目的是为了减少内存的占用;

                                  (线程结束gc会自动回收,显式调可以加快内存回收)

T initialValue():返回该线程局部变量的初始值;(缺省值为null,一般使用匿名内部类)


ThreadLocal与线程同步机制

都是为了解决多线程中相同变量的访问冲突问题。

线程同步机制:1.通过对象的锁机制保证同一时间只有一个线程访问变量;(变量是多个线程共享的,通过加锁、释放锁)

                         2.仅提供一份变量,让不同的线程排队访问;

                         3.锁机制牺牲时间换空间;

ThreadLocal:1.为每一个线程提供一个独立的变量副本,从而隔离了多个线程对数据的访问冲突;

                        2.为每一个线程都提供了一份变量,因此可以同时访问而互不影响;

                        3.存储拷贝牺牲空间换时间;


©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android Handler机制系列文章整体内容如下: Android Handler机制1之ThreadAnd...
    隔壁老李头阅读 7,684评论 4 30
  • 前言 ThreadLocal很多同学都搞不懂是什么东西,可以用来干嘛。但面试时却又经常问到,所以这次我和大家一起学...
    liangzzz阅读 12,506评论 14 228
  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,375评论 11 349
  • Java SE 基础: 封装、继承、多态 封装: 概念:就是把对象的属性和操作(或服务)结合为一个独立的整体,并尽...
    Jayden_Cao阅读 2,149评论 0 8
  • 午后随友在红木老家具市场闲逛,拍得一联,深得我意,进店问店家,上联有吗,店家回答就此一联! 回来后,自己检索后才得...
    觅雅斋阅读 222评论 0 0