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

北京网站建设厂家嘉祥住房和城乡建设局网站

北京网站建设厂家,嘉祥住房和城乡建设局网站,营销点子,上海市企业服务云官网ThreadLocal 什么是ThreadLocal ThreadLoacal类可以为每个线程保存一份独有的变量#xff0c;该变量对于每个线程都是独占的。实现原理为每个Thread类中包含一个ThreadHashMap#xff0c;key为变量的对应的ThreadLocal对象#xff0c;value为变量的值。 在日常使用中该变量对于每个线程都是独占的。实现原理为每个Thread类中包含一个ThreadHashMapkey为变量的对应的ThreadLocal对象value为变量的值。 在日常使用中我们可以通过set(value)方法设置值然后通过get()方法获取值示例代码如下 我们通过线程池执行了五个线程每个线程都有一份自己独有的id变量实现了线程间的数据隔离。 Slf4j public class ThreadLocalTest {// ThreadLocal 变量每个线程都有自己的副本private static final ThreadLocalInteger id new ThreadLocal();Testpublic void testThreadLocal() {// 创建线程池ExecutorService executorService Executors.newCachedThreadPool();try {for (int i 0; i 5; i ) {int finalI i;executorService.execute(() - {// 设置ThreadLocal 变量 id.set(finalI);// 获取ThreadLocal变量log.info(The id of thread {} is {}, Thread.currentThread().getName(), id.get());});}} finally {id.remove();executorService.shutdown();}} }传统的HashMap是链地址法发生碰撞放入桶内ThreadLocalMap是开放地址法发生冲突放到后一位 实现原理 那如何实现这种线程间的数据隔离呢一种容易想到的方法是在Map中进行存储每个ThreadLocal变量内维护一个Map其中key为每个线程的IDvalue为对应的值。这样当调用get()方法时会通过hash算法找到对应线程的值。 jdk也确实是这么做的只不过存放元素Map的实现不是HashMap而是ThreadLocalMap解决冲突的做法是开放寻址法即出现冲突就往下一个临近位置找直到找到空位置。 早期的实现中多个线程会共享一个ThreadLocalMap这样随着线程数的增加map就需要扩容会消耗较多的资源 后来每个线程都有自己的一个ThreadLocalMap各自保存自己的局部变量key为变量名value为变量值。 因为局部变量很少所以一般不需要扩容。 内存泄漏 下面这张图是ThreadLocal对应的引用关系可以看到在新的设计下ThreadLocalMap存在于Thread中是和Thread的生命周期一致的。 ThreadLocalMap的key为ThreadLocal对象value是对应的值需要注意的是ThreadHashMap的key会使用弱引用这主要是为了当ThreadLocal为null后除了ThreadHashMap持有的弱引用外没有别的强引用ThreadLocal对象可以被GC回收。 但是这样就导致ThreadHashMap中对应的key为null其value引用的对象不会被GC回收从而出现了内存泄漏。 所以在使用完ThreadLocal变量后尽量使用remove()方法进行清理这样会把key为null的键值对删除。 再回到上面的示例上面的示例我们使用final修饰了ThreadLocal保证其不会被修改这样做会导致ThreadLocal永远存在强引用不会被释放容易发生内存泄露所以需要我们显示调用remove()方法进行清理。 参考链接 ThreadLocal的内存泄露什么原因如何避免
http://www.hkea.cn/news/14510952/

相关文章:

  • 怎么套模板做网站安徽酒店网站建设
  • 怎么通过做网站来赚钱平台网站建设有哪些方面
  • godaddy 网站怎么建设专业模板建站公司
  • 做网站卖东西赚钱吗域名注册服务机构注销域名的情形
  • 做外贸哪几个网站好hexo建设网站
  • 做一个好的网站需要什么网站商城模板
  • 佛山外贸网站建设报价现在还有企业要建网站吗
  • 作作网站网站配图尺寸
  • 建湖专业做网站的公司wordpress md主题
  • 湖北省建设厅七大员报名网站如何安装wordpress模板
  • 网站seo综合查询专业网吧装修设计公司
  • 顺的网站建设要多少钱网站改版优化
  • 福州公司网站开发方案网站建设费用折旧年限
  • 宁波网站建设哪里有简单网站首页怎么做
  • 企业展厅设计网seo营销推广平台
  • 东莞长安做网站企业融资的方式有哪些
  • asp双语网站后台怎么用上海公司买房最新政策2021
  • 购物网站开店免费联网站
  • 网站建设设计合同书宁波seo推广推荐公司
  • 践行新使命忠诚保大庆网站建设ps上怎么做网站轮播图
  • 在电脑新建网站站点十大知名博客网站
  • lnmp wordpress网站怎么看别人网站是怎么做的
  • 网站链接维护怎么做陕西建设监理证书查询网站
  • 网站网页设计工作内容网站开发投资成本
  • 网站模板制作与安装教程视频google网站收录
  • 专业做轮胎的网站joomla构建行业网站
  • 空包网站怎么建设网站代理加盟赚钱吗
  • 利用小米路由器mini做网站WordPress动漫源码
  • 江苏优化网站公司哪家好北京 企业展厅设计公司
  • 郑州网站模板建设宁夏政务网站建设标准