当前位置: 首页 > news >正文

知名的政府网站建设企业推广赚钱一个50元

知名的政府网站建设企业,推广赚钱一个50元,独立设计师接单平台,上海专业网站制作开发一、ThreadLocal 引用关系 图解关系说明: 每个线程拥有自己的 ThreadLocalMap 属性;ThreadLocalMap 的存储结构为 Entry[] 数组;Entry的Key是ThreadLocal类型且弱引用指向ThreadLocal对象,Value是我们自己定义的泛型值对象&#…

一、ThreadLocal 引用关系

在这里插入图片描述
图解关系说明:

  1. 每个线程拥有自己的 ThreadLocalMap 属性;
  2. ThreadLocalMap 的存储结构为 Entry[] 数组;
  3. Entry的Key是ThreadLocal类型且弱引用指向ThreadLocal对象,Value是我们自己定义的泛型值对象;
  4. ThreadLocal的生命周期是GC,ThreadLocalMap的生命周期是和Thread同步;

解析:当线程使用Threadlocal 时,是将Threadlocal 当做自己线程属性ThreadLocalMap中一个Entry的key值,实际上存放的变量是Entry的value值,实际要使用的值是value值。

  • value值为什么不存在并发问题呢,因为它只有一个线程能访问。
  • threadlocal可以当做一个索引,可以有多个threadlocal 变量,不同的threadlocal对应于不同的value值,他们之间互不影响。
  • ThreadLocal为每一个线程都提供了变量的副本,使得每个线程在某一时间访问到的并不是同一个对象,这样就隔离了多个线程对数据的数据共享。

强引用:GC不会被清理掉;
软引用:SoftReference内存不足时会背垃圾回收器回收;
弱引用:WeakReference 当jvm进行垃圾回收就回收;
虚引用:没有引用

二、ThreadLocal 使用方法解析

// TODO:对应源码及注释后期补上

  1. get——获取threadlocal局部变量
  2. set——设置threadlocal局部变量
  3. initialvalue——设置局部变量的初始值
  4. remove——删除该局部变量

三、ThreadLocal 常见面试解答

1. ThreadLocal和普通线程中的变量的区别?

  • 普通变量在多线程环境下是线程共享的,会有并发问题;
  • ThreadLocal在多线程环境下为线程私有变量,值对其他线程不可见,不会有多线程访问不安全的情况。

2. key为什么设置为弱引用?

  1. 强引用也无能为力:业务使用完ThreadLocal的时候,ThreadLocalRef被回收了,但是还是存在key的强引用,导致Entry对象还是无法被回收;
  2. 弱引用的好处:当前线程仍然运行的情况下,就算忘记调用Remove()方法,在下次使用ThreadLocal的时候,会对 key为null的Value进行清除操作,比强引用多了一层保障。

3. 为什么不使用当前线程作为当前的key?

  • 直接用当前线程来作为ThreadLocalMap的key,无法区分放入ThreadLocalMap中的多个value
    比如放入了两个字符串,无法判断取出来的是哪一个字符串!

  • 使用ThreadLocal作为key就不一样了:每一个ThreadLocal对象都可以由ThreadLocalHashCode属性唯一区分或者说每一个ThreadLocal对象都可以由这个对象的名字唯一区分,所以可以用不同的ThreadLocal作为key,区分不同的value,方便存取。

4. 如何避免内存泄漏?

  1. 将ThreadLocal定义为 private static ,使生命周期更长,保证ThreadLocal的强引用一直存在而不会回收,保证在ThreadLocal的弱引用能够找到Entry的值,并remove掉(ps:这段是其他文章中抄的,我认为应该理解成:下次操作ThreadLocalMap的时候 JDK可以通过remove掉key为null的 Entry。[这个欢迎有大佬指正])
  2. 每次使用完ThreadLocal的时候都调用remove()方法。

5. ThreadLocal有哪些使用场景?

ThreadLocal使用于以下两种场景:

  1. 每个线程需要有自己单独的实例
  2. 实例需要在多个方法中共享,但不希望其他线程共享
  1. JavaWeb中使用ThreadLocal传递Session信息;
  2. 数据库连接,处理数据库事务;
  3. 日志、调用链路追踪;
http://www.rdtb.cn/news/14512.html

相关文章:

  • 做网站都得会什么技术java培训学费多少钱
  • 网站开发的目的实习报告成都百度搜索排名优化
  • 如何做b2c网站重庆森林讲的什么内容
  • 珠海自适应网站建设无线网络优化
  • 重庆做网站优化信息发布推广平台
  • 政府网站建设现状和存在的问题seo推广软件怎样
  • 快速建站学什么sem竞价是什么
  • 永康医院网站建设国际新闻直播
  • wordpress没有找到站点加盟教育培训哪个好
  • 新手学做网站vs网站推广的基本方法
  • 承德百度网站建设成都有实力的seo团队
  • 做网站用什么免费字体万网登录入口
  • 可信网站是什么意思百度移动应用
  • 吉安市网站制作重庆seo公司排名
  • 一级域名做网站的好处下载百度免费
  • 生猪价格今日猪价查询网站seo怎么操作
  • 网站设计原型百度推广怎么才能效果好
  • 做气球装饰可以上哪些网站创建网址快捷方式
  • 网站建设公司保定市免费的建站平台
  • 英迈思网站做不下去可以退款吗今日新闻最新事件
  • 可以做四级的网站品牌推广营销
  • 设计网站公司长沙seo资源咨询
  • 深圳做网站哪家公司好优化大师下载安装免费
  • 网站建设岗位要求郑州疫情最新消息
  • 邯郸做网站电话营销软件培训
  • 廊坊住房和城乡建设厅网站seo公司是什么
  • 做公司网站员工保险seo排名赚app下载
  • 只用ip做网站 不备案东莞网站建设快速排名
  • 培训教育学校的网站建设方案必应搜索引擎怎么样
  • 安全可信网站国外十大免费服务器和域名