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

网络营销推广策略seo培训资料

网络营销推广策略,seo培训资料,安卓开发公司,个人网站设计方案小编典典这里的所有答案都是正确的#xff0c;但是有些令人失望#xff0c;因为它们多少掩盖了聪明ThreadLocal的实现是多么的明智。我只是在寻找源代码#xff0c;ThreadLocal并且对它的实现方式印象深刻。天真的实现如果我要求您ThreadLocal在javadoc中描述的给定API的基础…小编典典这里的所有答案都是正确的但是有些令人失望因为它们多少掩盖了聪明ThreadLocal的实现是多么的明智。我只是在寻找源代码ThreadLocal并且对它的实现方式印象深刻。天真的实现如果我要求您ThreadLocal在javadoc中描述的给定API的基础上实现一个类该怎么办最初的实现可能是ConcurrentHashMap使用Thread.currentThread()作为其密钥。这样会很好地工作但确实有一些缺点。线程争用- ConcurrentHashMap是一个非常聪明的类但是它最终仍必须处理防止多个线程以任何方式破坏它并且如果不同的线程有规律地命中它将会降低速度。即使在线程完成并且可以进行GC处理后它仍永久保持指向线程和对象的指针。GC友好的实现好的再试一次让我们使用弱引用来处理垃圾回收问题。处理WeakReferences可能会造成混淆但是使用像这样构建的地图应该足够了Collections.synchronizedMap(new WeakHashMap())或者如果我们使用的是番石榴(应该是)new MapMaker().weakKeys().makeMap()这意味着一旦没有其他人抓住线程(暗示线程已完成)就可以对键/值进行垃圾收集这是一种改进但仍无法解决线程争用问题这意味着到目前为止我们ThreadLocal还不是全部令人赞叹的一堂课。此外如果有人决定在Thread完成后保留对象那么就永远不会对它们进行GC处理因此即使我们的对象现在在技术上无法到达也不会对其进行GC处理。聪明的实现我们一直在考虑ThreadLocal将线程映射为值但是也许这实际上并不是正确的思考方式。与其将其视为从Threads到每个ThreadLocal对象中的值的映射不如将其视为ThreadLocal对象到每个Thread中的值的映射怎么办如果每个线程都存储了该映射而ThreadLocal仅提供了该映射的一个不错的接口我们可以避免以前实现中的所有问题。一个实现看起来像这样// called for each thread, and updated by the ThreadLocal instancenew WeakHashMap()此处无需担心并发性因为只有一个线程将访问此映射。Java开发人员在这里比我们有一个主要优势-他们可以直接开发Thread类并向其添加字段和操作而这正是他们所做的。/* ThreadLocal values pertaining to this thread. This map is maintained* by the ThreadLocal class. */ThreadLocal.ThreadLocalMap threadLocals null;正如评论所暗示的确实是ThreadLocal对象为此跟踪的所有值的私有包映射Thread。的实现ThreadLocalMap不是WeakHashMap而是遵循相同的基本协定包括通过弱引用来持有其密钥。ThreadLocal.get() 然后实现如下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();}而ThreadLocal.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;}本质上 在此线程中使用地图可以容纳我们所有的ThreadLocal对象。这样我们永远不必担心其他线程中的值(ThreadLocal字面上只能访问当前线程中的值)因此没有并发问题。此外一旦Thread完成其映射将自动进行GC处理并且将清除所有本地对象。即使将Thread其保留ThreadLocal对象也会被弱引用保留并且一旦ThreadLocal对象超出范围就可以将其清除。不用说这个实现给我留下了深刻的印象它很好地解决了很多并发问题(可以利用作为核心Java的一部分但这是可以原谅的因为它是一个非常聪明的类)并且允许快速和对仅一次需要一个线程访问的对象的线程安全访问。tl; dr ThreadLocal的实现非常酷并且比您乍看之下要快/聪明得多。如果您喜欢这个答案您可能也会喜欢我(不那么详细)的讨论ThreadLocalRandom。2020-09-15
http://www.sadfv.cn/news/329999/

相关文章:

  • excel表格做网站做炒作的网站
  • 成立一个网站软件需要多少钱全自动网站制作源码
  • 做一个网站需要什么条件商城网站建设是什么意思
  • 如何进行网站性能优化?苏州网站制作搭建
  • 锤子手机网站模板商务网站开发与建设
  • 做网站用的什么编程语言网站的常用技术有哪些
  • 南宁网站建设优化排名柘城网站建设
  • 做做做网站wordpress二维码
  • 品牌网站建设帮你大蝌蚪网站建设网站排名
  • 网站 代理 备案 费用admin管理员登录
  • 网站八个安康市教育云平台
  • 大良营销网站建设服务广州广告网站建设
  • 阿里巴巴网站威海哪里做?深圳商业策划公司十大公司
  • 做网站的电脑软件上海资格证报名网站
  • 简单网站门户网站开发设计报告
  • 没有服务器建网站官网是什么意思
  • 个人网站开发模式windows10前段网站建设
  • 服务器放n个网站公职人员可以做公益网站吗
  • 抚州南城网站建设上海市城乡住房建设厅网站
  • 做环保的网站有哪些网站上传都传些什么文件
  • 吉林省招标网官方网站wordpress图片比例拉伸
  • 怎样上传网站程序网站开发 指导
  • 贵阳做网站公司吗手机网站主页设计
  • 涞水网站建设湖北网站建设免费
  • 西安查派网站建设网站整站html
  • 判断网站万云网络网站
  • 用dw做的网页怎么连到网站上网站建设客户沟通
  • 网站轮播代码切图网站建设
  • 如何手机做网站宁波怎么做网站排名优化
  • 内蒙古建设银行网站个人主页代码