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

网站备案能快速备案嘛建筑设计费一般多少钱一平方

网站备案能快速备案嘛,建筑设计费一般多少钱一平方,wordpress获取页面的当前位置,做模板网站推荐乐云seoprivate ThreadLocal threadLocal new ThreadLocal(); threadLocal.set(0); (int) threadLocal.get(); 上面三行代码分别是定义、赋值和取值。 介绍#xff1a; 我们只需要实例化对象一次#xff0c;并且也不需要知道它是被哪个线程实例化。虽然所有的线程都能访问到这个T… private ThreadLocal threadLocal new ThreadLocal(); threadLocal.set(0); (int) threadLocal.get(); 上面三行代码分别是定义、赋值和取值。 介绍 我们只需要实例化对象一次并且也不需要知道它是被哪个线程实例化。虽然所有的线程都能访问到这个ThreadLocal实例但是每个线程却只能访问到自己通过调用ThreadLocal的set()方法设置的值。即使是两个不同的线程在同一个ThreadLocal对象上设置了不同的值他们仍然无法访问到对方的值。 需要框架源码的朋友可以看我个人简介联系我推荐分布式架构源码。  各个线程赋值读取互补干扰的原理: 源码中有一个ThreadLoalMap类型的东西理解成map类型即可。 详解一下取值过程调用ThreadLocal的get方法时会先调用getMap(t)获取到ThreadLoalMap的集合其中参数t为当前线程(Thread.currentThread())getMap方法表示每个线程对象中都维护有这么个ThreadLoalMap对象集合。 public T get() {Thread t Thread.currentThread();ThreadLocalMap map getMap(t);if (map ! null) {ThreadLocalMap.Entry e map.getEntry(this);if (e ! null) {SuppressWarnings(unchecked)T result (T)e.value;return result;}}return setInitialValue(); } ThreadLocalMap getMap(Thread t) {return t.threadLocals; } 然后调用该集合的getEntry方法参数就是ThreadLocal对象本身ThreadLocal的hash值和table.length构成了Entry的键。 private Entry getEntry(ThreadLocal? key) {int i key.threadLocalHashCode (table.length - 1);Entry e table[i];if (e ! null e.get() key)return e;elsereturn getEntryAfterMiss(key, i, e); } 总结下 每个线程都维护有一个ThreadLocalMap对象集合他的键就是ThreadLocal对象的hash相当于这么个东西这样A、B两个线程就会各自维护一个ThreadLocalMap对象集合共用一个ThreadLocal对象的hash值当作其中的键就相当于A线程的ThreadLocalMap有共用的hash键B线程的ThreadLocalMap也有一个共用的hash键。这样就不会冲突了有点绕多查资料多理解。 InheritableThreadLocal其中还有这么个东西InheritableThreadLocal类是ThreadLocal类的子类。ThreadLocal中每个线程拥有它自己的值与ThreadLocal不同的是InheritableThreadLocal允许一个线程以及该线程创建的所有子线程都可以访问它保存的值。相当于一个类定义成protected。 1. 每个Thread实例内部有二个ThreadLocalMap的K-V容器实例分别对应threadLocals及inheritableThreadLocals, 容器的元素数量即为Thread实例里的ThreadLocal实例个数 2. ThreadLocalMap里的每个Entry的Key与ThreadLocal实例的HashCode相关这样多个ThreadLocal实例就不会搞混 3. 每个ThreadLocal实例使用set赋值时实际上是在ThreadLocalMap容器里添加(或更新)一条Entry信息 4. 每个ThreadLocal实例使用get取值时从ThreadLocalMap里根据key取出value 。 关于内存泄漏问题 通过之前的分析已经知道当使用ThreadLocal保存一个value时会在ThreadLocalMap中的数组插入一个Entry对象按理说key-value都应该以强引用保存在Entry对象中但在ThreadLocalMap的实现中key被保存到了WeakReference对象中源码中是继承WeakReference对象了。 static class Entry extends WeakReferenceThreadLocal? ThreadLocal在ThreadLocalMap中是以一个弱引用身份被Entry中的Key引用的因此如果ThreadLocal没有外部强引用来引用它那么ThreadLocal会在下次JVM垃圾收集时被回收。这个时候就会出现Entry中Key已经被回收出现一个null Key的情况外部读取ThreadLocalMap中的元素是无法通过null Key来找到Value的。因此如果当前线程的生命周期很长一直存在那么其内部的ThreadLocalMap对象也一直生存下来这些null key就存在一条强引用链的关系一直存在Thread -- ThreadLocalMap--Entry--Value这条强引用链会导致Entry不会回收Value也不会回收但Entry中的Key却已经被回收的情况造成内存泄漏。 但是JVM团队已经考虑到这样的情况并做了一些措施来保证ThreadLocal尽量不会内存泄漏在ThreadLocal的get()、set()、remove()方法调用的时候会清除掉线程ThreadLocalMap中所有Entry中Key为null的Value并将整个Entry设置为null利于下次内存回收。
http://www.hkea.cn/news/14580412/

相关文章:

  • 网站开发href使用本地链接网站制作 合肥
  • 开源网站统计网站怎么优化推荐
  • 天津市建设局网站如何做网站搭建
  • 建站服务的网络公司有哪些领动营销网站建设
  • 看网站的关键词网页制作英文
  • 成都学网站建设费用做网站要不要用控件
  • 昆山做网站多少钱京东网站建设费用
  • 网站推广的预算老油条视频h5
  • 电商网站建设c微fzsszai专业网站建设阿里云
  • php代理ip访问网站做网站花都
  • 上海网站建设哪里便宜北京建站公司
  • 国贸网站建设公司宠物网站开发与实现
  • mvc 网站模板搜房网站建设分析
  • 中国服务器在外国网站有哪些公司网站维护由那个部门做
  • 济南建网站哪家好怎样做网站的链接
  • 罗湖企业网站建设wordpress什么插件好
  • 做网站的回扣做淘宝网站用什么软件做
  • 湛江市建设局官方网站单业网站建设
  • php做网站的源码app网站开发哪家好
  • 网站内部结构优化有没有做cad单的网站
  • 帝国cms网站户外网站设计
  • 中小型网站建设公司硬件开发属于什么行业
  • 怎么样把以前做的网站删除建设集约化网站的进展情况
  • 德阳网站建设公司怀集县住房和城乡规划建设网站
  • 连云港做网站一级a做爰片 网站就能看
  • 爱站网挖掘关键词购物网站建设市场
  • php网站开发书籍线下教育机构
  • 烟台网站制作厂家联系方式网站几个数据库
  • 紫搜科技建站哈尔滨自助建站
  • 网站建设如何跑单子erp定制开发价格