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

怎么用dw网站怎么建设贵州门户网站建设

怎么用dw网站怎么建设,贵州门户网站建设,企业网站建设与实现的论文,女性门户资讯类网站织梦dedecms模板推荐链接: 总结——》【Java】 总结——》【Mysql】 总结——》【Redis】 总结——》【Kafka】 总结——》【Spring】 总结——》【SpringBoot】 总结——》【MyBatis、MyBatis-Plus】 总结——》【Linux】 总结——》【MongoD…

推荐链接:
    总结——》【Java】
    总结——》【Mysql】
    总结——》【Redis】
    总结——》【Kafka】
    总结——》【Spring】
    总结——》【SpringBoot】
    总结——》【MyBatis、MyBatis-Plus】
    总结——》【Linux】
    总结——》【MongoDB】
    总结——》【Elasticsearch】

Java——》ThreadLocal

  • 一、概念
  • 二、源码
  • 三、内部结构
  • 四、特点
  • 五、内存泄漏问题
    • 1、现象
    • 2、解决方案
  • 六、内存泄漏案例
  • 七、保证原子性

一、概念

ThreadLocal可以理解为线程本地变量,他会在每个线程都创建一个副本,那么在线程之间访问内部副本变量就行了,做到了线程之间互相隔离,相比于synchronized的做法是用空间来换时间。
ThreadLocal的本质就是一个Map,ThreadLocal做为key,将一个数据和本地线程绑定在一起。

二、源码

ThreadLocal有一个静态内部类ThreadLocalMap,ThreadLocalMap又包含了一个Entry数组,Entry本身是一个弱引用,他的key是指向ThreadLocal的弱引用,Entry具备了保存key value键值对的能力。
image.png
image.png

三、内部结构

image.png

四、特点

  • 每个Thread中都存储着一个成员变量ThreadLocalMap
  • ThreadLocal本身不存储数据,像是一个工具类,基于ThreadLocal去操作ThreadLocalMap
  • ThreadLocalMap本身就是基于Entry[]实现的,因为一个线程可以绑定多个ThreadLocal,这样一来,可能需要存储多个数据,所以采用Entry[]的形式实现。
  • 每一个现程都自己独立的ThreadLocalMap,再基于ThreadLocal对象本身作为key,对value进行存取
  • ThreadLocalMap的key是一个弱引用,弱引用的目的是为了防止内存泄露,如果是强引用那么ThreadLocal对象除非线程结束否则始终无法被回收,弱引用则会在下一次GC的时候被回收

五、内存泄漏问题

Java中4种引用:
强引用:OOM也不清除
软引用:内存不足清除
弱引用:只要GC就清除
虚引用:拿不到引用,构建出来就凉凉~~

image.png

1、现象

假如ThreadLocal对象被回收之后,key因为弱引用也会被GC回收掉,同时线程还没有被回收,entry中就存在key为null,但value有值的entry对象,但是内存中的value无法被获取到,同时也无法被回收,就会导致内存泄漏。

2、解决方案

使用TheadLocal完毕后,调用remove方法删除Entry对象
image.png

六、内存泄漏案例

参考链接:Java——》内存泄露案例

七、保证原子性

ThreadLocal保证原子性的方式,是不让多线程去操作临界资源让每个线程去操作属于自己的数据

static ThreadLocal tl1 = new ThreadLocal();
static ThreadLocal tl2 = new ThreadLocal();public static void main(String[] args) {tl1.set("123");tl2.set("456");Thread t1 = new Thread(() -> {System.out.println("t1:" + tl1.get());System.out.println("t1:" + tl2.get());});t1.start();System.out.println("main:" + tl1.get());System.out.println("main:" + tl2.get());
}
http://www.15wanjia.com/news/176909.html

相关文章:

  • 娱乐类网站怎么建设怎么看网站被降权
  • 兼职网网站建设方案建议书广州营销seo
  • 安防 光速东莞网站建设电商未来发展趋势前景
  • 苏州免费推广的网站东莞市建设
  • 苏州高端网站制作企业官网wordpress主题下载
  • 网站建设编程软件wordpress部署
  • 湘潭网站建设多少钱 报价表湘潭磐石网络建设工程施工合同是专属管辖吗
  • 做网站换服务器怎么整网站建设所需要软件
  • 知识网站单位做员工招退工在什么网站
  • 网站建设自学 优帮云下载什么软件可以做动漫视频网站
  • 贵阳哪里做网站网站建设 分类
  • python做网站商城开发如何找客户资源
  • 什么叫 营销型网站c++做网站
  • 商务网站的基本情况家居在线设计网站
  • 化妆品网站开发的外文翻译动画专业大学
  • 南京网站设计培训山东百度推广总代理
  • 网站设置始终请求电脑版城市建设模拟游戏网站
  • 怎样设网站做淘宝网站代理
  • 青岛响应式网站设计青岛工程建设监理公司网站
  • 衡粘水佩网站建设网站建设在开封找谁做
  • 印发网站建设方案梧州网站建设厂家
  • 北京网站建设付款方式wordpress 小工具使用
  • 丰台区的建设网站wordpress安装无法连接数据库连接
  • 商业类网站如何做外贸
  • 公司网站建设概述美工培训速成班学费
  • WordPress迁移网站打不开wordpress附件存放位置
  • 阳泉 网站建设合作网站建设要知道的
  • 做网站的公司 贵阳源码是否为wordpress模板
  • 备案号查询网站网址求助如何做网站推广
  • 杭州 网站建设网站股权众筹网站建设