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

我想给别人做网站网站建设z亿玛酷1负责

我想给别人做网站,网站建设z亿玛酷1负责,网页开发工具所见即所得,网站建设开发有什么好处实现threadlocal这是我上周的帖子的后续文章#xff0c;其中我解释了ThreadLocal用法背后的动机 。 从帖子中我们可以回忆起#xff0c;如果您希望为每个线程拥有一个独立初始化的变量副本#xff0c;则ThreadLocal确实是一个很酷的概念。 现在#xff0c;好奇的人可能已经… 实现threadlocal 这是我上周的帖子的后续文章其中我解释了ThreadLocal用法背后的动机 。 从帖子中我们可以回忆起如果您希望为每个线程拥有一个独立初始化的变量副本则ThreadLocal确实是一个很酷的概念。 现在好奇的人可能已经开始问“我如何在Java中实现这样的概念” 否则您可能会觉得这不是一个有趣的话题–毕竟您在这里所需的只是一张地图 不是吗 在处理ThreadLocal T时 将解决方案实现为HashMap ThreadT并以Thread.currentThread为键似乎是明智的选择。 其实不是那么简单。 因此如果您有五分钟的时间请忍受我我将指导您完成一个漂亮的设计概念。 简单的HashMap解决方案的第一个明显问题是线程安全性。 由于HashMap并不是为支持并发使用而构建的因此我们无法在多线程环境中安全地使用该实现。 幸运的是我们不需要花很多时间来解决问题-ConcurrentHashMap ThreadT看起来像是天作之合。 检索的完全并发性和可调整的预期更新并发性正是我们首先需要的。 现在如果您将基于ConcurrentHashMap的解决方案应用于JDK源代码中的ThreadLocal实现则会带来两个严重的问题。 首先在Map结构中将线程作为键。 由于该映射永远不会被垃圾回收因此最终您将永远保持对该线程的引用从而阻止该线程成为GCd。 不情愿的是您在设计中造成了巨大的内存泄漏。 第二个问题可能需要更长的时间才能浮出水面但是即使在幕后进行了巧妙的分段以减少锁争用的机会 ConcurrentHashMap仍然承担同步开销。 在同步需求仍然存在的情况下您仍然拥有一个结构可能成为瓶颈的根源。 但是让我们首先开始解决最大的问题。 如果我们的引用是指向相关线程的最后一个引用则我们的数据结构需要允许对线程进行垃圾回收。 再次第一个可能的解决方案是盯着我们看-为什么不使用WeakReferences代替我们通常对对象的引用 因此实现现在看起来类似于以下内容 Collections.synchronizedMap(new WeakHashMapThread, T()) 现在我们已经解决了泄漏问题–如果除我们之外没有人引用Thread 则可以将其定型并进行垃圾回收。 但是我们仍然没有解决并发问题。 现在解决方案实际上是关于跳出思路思考的样本。 到目前为止我们已经将ThreadLocal变量视为映射到变量的Threads 。 但是如果我们颠倒了思路而是设想了一个解决方案将ThreadLocal对象映射到每个Thread中的值该怎么办 如果每个线程都存储该映射并且ThreadLocal只是该映射的接口则可以避免同步问题。 更好的是我们还避免了GC带来的问题 确实当我们打开ThreadLocal和Thread类的源代码时 我们看到这正是在JDK中实际实现该解决方案的方式 public class Thread implements Runnable {ThreadLocal.ThreadLocalMap threadLocals null;// cut for brevity }public class ThreadLocalT {static class ThreadLocalMap {// cut for brevity}ThreadLocalMap getMap(Thread t) {return t.threadLocals;}public T get() {Thread t Thread.currentThread();ThreadLocalMap map getMap(t);if (map ! null) {ThreadLocalMap.Entry e map.getEntry(this);if (e ! null)return (T) e.value;}return setInitialValue();}private T setInitialValue() {T value initialValue();Thread t Thread.currentThread();ThreadLocalMap map getMap(t);if (map ! null)map.set(this, value);elsecreateMap(t, value);return value;}// cut for brevity } 所以我们在这里。 Thread类保留对ThreadLocal.ThreadLocalMap实例的引用该实例是使用对键的弱引用构建的。 以相反的方式构建结构由于ThreadLocal只能访问当前线程中的值因此完全避免了线程争用问题。 另外当Thread完成工作时映射可以进行垃圾回收因此我们还避免了内存泄漏问题。 希望您对设计有所了解因为它确实是解决复杂问题的理想解决方案。 我确实认为阅读源代码是学习新概念的理想方式。 而且如果您是Java开发人员那么比阅读Joshua Bloch和Doug Lea集成到JDK的源代码更好的地方是获得知识的地方 参考 如何实现ThreadLocal 由我们的JCG合作伙伴 Nikita Salnikov Tarnovski在Plumbr Blog博客上获得。 翻译自: https://www.javacodegeeks.com/2013/11/how-is-threadlocal-implemented.html实现threadlocal
http://www.fuzeviewer.com/news/12483/

相关文章:

  • 睢县网站建设互联网开网站怎么做
  • 网站设计评价标准网站建设语言学什么
  • 那个网站可以做考卷截图按钮图标素材网站
  • 企业网站的seo网站开发海口
  • 阿里巴巴做网站么品牌设计风格
  • 工信部网站域名备案查询要怎样注册公司
  • 赤峰做网站的网络公司工会教工之家网站建设
  • IntelliJ IDEA 社区版支持 Spring Boot 开发说明文档
  • 旅游网站前台怎么做wordpress 主题巴士
  • 平谷重庆网站建设海南建设官方信息网站
  • 电子商务网站建设与规划平面设计网名
  • 网新中英企业网站管理系统wordpress主题搜索引擎
  • 华北理工大学学科建设处网站做一个网站成本大概多少钱
  • 从“找文件半小时”到“答案秒出现”:Dify工作流如何重塑我们团队的协作效率
  • 网站彩票代理怎么做网站开发与设计课程时间
  • 网站推广常用的方法新华区设计网站公司
  • 题解:uoj703 赵云八卦阵
  • 阿里云做网站可以吗用js做网站登录
  • 福州集团网站建设百度公司做网站
  • 长沙制作网站软件怎样做网上代理卖东西
  • 免费建站自助建站网站建设教程网站建设教程网站30g流量
  • 网站制作教程手机做正规网站有哪些
  • 开发手机网站门户网站包括哪些
  • 济南设计网站的公司网站做支付端口的费用
  • 哪里可以做微网站21ic项目外包平台
  • 2025年11月行业水泵轴承实力厂家榜单:领军企业徐州优力同创与技术革新解析
  • 开源破局!MyEMS 如何让企业能源管理告别 “高价闭源”,轻松踩中双碳节奏?
  • 网站建设续费是什么费用合肥市城乡建设局和住建局官网
  • 小米网站seo分析报告+书宜昌网站建设开发团队
  • .net做网站开发网站开发工程师所需要的经验