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

南京做网站咨询南京乐识南宁seo网络推广

南京做网站咨询南京乐识,南宁seo网络推广,html5网站抓取,阿里云服务器做网站目录 1、ConCurrentHashMap为什么不允许key为null? 2、ThreadLocal会出现内存泄露吗? 3、AQS理解 4、lock 和 synchronized的区别 1、ConCurrentHashMap为什么不允许key为null? 底层 putVal方法 中 如果key || value为空 抛出…

目录

1、ConCurrentHashMap为什么不允许key为null?       

2、ThreadLocal会出现内存泄露吗?

3、AQS理解

4、lock 和 synchronized的区别


1、ConCurrentHashMap为什么不允许key为null?       

       底层  putVal方法 中 如果key || value为空 抛出空指针异常

       其实是为了避免在多线程并发场景下的歧义问题

       在获取key 返回结果为null 无法判断是 put(k,v)的时候 value本身是null值,还是key本身不存在。还是key存在 value为空 。这种不确定性造成线程安全问题 而ConCurrentHashMap本身是线程安全的集合,固key不能为null

2、ThreadLocal会出现内存泄露吗?

        ThreadLocal是用来解决线程安全性的一个工具,让每个线程都开辟了一块内存空间,用来存储共享变量的一个副本,然后每个线程只需要去访问和操作自己的共享变量的副本,去避免多线程竞争同一个共享资源。

        每个线程都有一个成员变量, ThreadLocalMap,当线程访问ThreadLocalMap修饰的成员变量时候, 保存数据副本 key为 ThreadLocal, 是弱引用 value 保存的是共享数据的副本 每个线程都有一个副本, 不存在对于共享数据的并发操作 解决了线程安全问题。

        弱引用 : 成员变量ThreadLocal 允许在引用关系存在的情况下被GC回收 一旦回收 key 的引用就会变为null, 就会导致内存永远无法被访问,造成内存泄漏

        ThreadLocal设计是一定存在内存泄漏的 。

        为了避免问题 在进行数据读写的时候 ThreadLocal默认会做一些清理动作,找到并清理entry里面的key为null的数据

        具体方法:

        1、每次用完ThreadLocal后,主动调用 remove() 方法移除数据 (最好方法)

        2、 ThreadLocal声明为全局变量,使得无法被GC回收(如果后续线程不再访问这个key,也会造成内存泄漏)

        最终回答:

        不恰当的使用threadlocal会造成内存泄漏,主要原因threadlocalmap里面的key是一个弱引用,弱引用特性是 不管是否存在直接引用的关系,当threalocal 没有其他的强引用关系的时候,对象就会被GC回收掉,从而导致key可能变为null,造成内存无法被访问

 

3、AQS理解

        AQS是多线程同步器,提供了两种锁的机制

        3.1、排它锁

        存在多个线程去竞争同一共享资源的时候,同一时刻只允许一个线程去访问这样一个共享资源,也就是多个线程中只能有一个线程去获得一个锁资源,

        比如 lock中的 ReentrantLock 重入锁,就是用到了AQS 中排它锁的功能

        3.2、共享锁

        也称为读锁,同一时刻允许多个线程同时获得锁的资源

         3.3、 AQS 作为互斥锁 需要解决三个核心问题
                3.3.1、互斥变量的设计如何保证多线程同时更新互斥变量的时候线程的安全性

         采用int 类型的互斥变量 state,用来记录锁竞争的状态 (0--没有 >=1 有线程持有。 线程获取锁资源 先会判断 state 是否为0 如果是 更新状态为1 表示占有到锁。 如果多个线程同时做一个操作,导致线程安全性问题,AQS 采用CAS机制保证state 互斥变量更新的一个原子性

                3.3.2、未竞争到锁资源的线程等待 以及竟遭到锁的资源释放锁之后的唤醒

        未获取到的线程 通过unsafe类中的park方法,去进行阻塞,把阻塞的线程按照先进先出的原则去加入到一个双向链表的一个结构中。当获取到锁资源的线程释放锁之后,会从双向链表的头部去唤醒下一个等待的线程,再去竞争锁

                3.3.3、锁竞争的公平性和非公共性

           公平锁先会判断双向链表是否有阻塞的线程,如果有就会排队等候

           非公平锁,不管是否有等待的线程,都会直接尝试更改state 去竞争锁

4、lock 和 synchronized的区别
  特性:

          synchronized:

          是java中的同步关键字。 两种方法控制锁定力度:1、把synchronized关键字修饰在方           法层面。2 、修饰在代码块上。  通过synchronized加锁对象的生命周期来控制锁定作用范           围。比如:锁对象是静态对象          或者是类对象,锁就属于全局锁。锁对象是普通实例对             象,锁定范围取决于实例生命周期。

          Lock

          是J.U.C包提供的接口,实现类: ReentrantLock重入锁的实现。  Lock中锁的力度是             通过 unlock() 方法和 lock() 方法来决定的,锁定作用域取决于Lock实例的生命周期

相同点: 

         功能:都是java中用来解决线程安全的问题一个工具       

不同点:

        1、Locksynchronized 灵活性更高

        Lock可以自主决定什么时候加锁,什么时候释放锁,只需要调用lock /unlock方法。Lock还提供了非阻塞的竞争锁方法,trylock方法, 通过返回true /false 来告诉当前线程是否已经存在有其他线程正在使用锁

        synchronized 是关键字。无法实现非阻塞竞争锁的方法, synchronized 锁的释放被动的,只有当synchronized 同步代码快 执行结束以后或者代码出现异常 ,才会被释放。

        2、Lock 提供了公平锁、非公平锁机制。 synchronized 只提供了非公平锁的实现

        3、性能差别

        synchronized 引入偏向锁、轻量级锁、重量级锁、以及锁升级的机制去实现锁的优化

        Lock 用到了自旋锁的方法实现性能优化


文章转载自:
http://astylar.wqfj.cn
http://frcp.wqfj.cn
http://insular.wqfj.cn
http://judgematic.wqfj.cn
http://diversity.wqfj.cn
http://diffractometry.wqfj.cn
http://etruria.wqfj.cn
http://springbuck.wqfj.cn
http://carriole.wqfj.cn
http://cycloplegia.wqfj.cn
http://shily.wqfj.cn
http://birdieback.wqfj.cn
http://caulk.wqfj.cn
http://ssfdc.wqfj.cn
http://crankery.wqfj.cn
http://sonication.wqfj.cn
http://illutation.wqfj.cn
http://yolky.wqfj.cn
http://kitbag.wqfj.cn
http://shimmy.wqfj.cn
http://occipital.wqfj.cn
http://narcotherapy.wqfj.cn
http://digitalization.wqfj.cn
http://glutinosity.wqfj.cn
http://palmitin.wqfj.cn
http://sour.wqfj.cn
http://centralization.wqfj.cn
http://nurbs.wqfj.cn
http://unrecognized.wqfj.cn
http://microbody.wqfj.cn
http://autism.wqfj.cn
http://prevoyance.wqfj.cn
http://stromboid.wqfj.cn
http://galactogogue.wqfj.cn
http://dubiously.wqfj.cn
http://lymphangitis.wqfj.cn
http://admiralty.wqfj.cn
http://maryland.wqfj.cn
http://flashlight.wqfj.cn
http://plant.wqfj.cn
http://lightly.wqfj.cn
http://chromatophore.wqfj.cn
http://incontrollably.wqfj.cn
http://zoroastrianism.wqfj.cn
http://interchannel.wqfj.cn
http://youngish.wqfj.cn
http://settling.wqfj.cn
http://bellflower.wqfj.cn
http://unquiet.wqfj.cn
http://u.wqfj.cn
http://bestow.wqfj.cn
http://deucedly.wqfj.cn
http://brier.wqfj.cn
http://plagiarise.wqfj.cn
http://peon.wqfj.cn
http://sitzkrleg.wqfj.cn
http://rigaudon.wqfj.cn
http://assistantship.wqfj.cn
http://lukewarm.wqfj.cn
http://meacock.wqfj.cn
http://blockette.wqfj.cn
http://scherzando.wqfj.cn
http://transept.wqfj.cn
http://wooingly.wqfj.cn
http://warehouse.wqfj.cn
http://deaminase.wqfj.cn
http://hereditarily.wqfj.cn
http://notchback.wqfj.cn
http://bismuthal.wqfj.cn
http://infundibuliform.wqfj.cn
http://israeli.wqfj.cn
http://neatly.wqfj.cn
http://aniconic.wqfj.cn
http://eutychian.wqfj.cn
http://coconspirator.wqfj.cn
http://heterozygosity.wqfj.cn
http://arteriolar.wqfj.cn
http://antiauxin.wqfj.cn
http://galibi.wqfj.cn
http://spendable.wqfj.cn
http://ashikaga.wqfj.cn
http://brewing.wqfj.cn
http://deconvolve.wqfj.cn
http://cymbalom.wqfj.cn
http://disrelation.wqfj.cn
http://packboard.wqfj.cn
http://pople.wqfj.cn
http://diabolist.wqfj.cn
http://luciferin.wqfj.cn
http://grazioso.wqfj.cn
http://clause.wqfj.cn
http://obscurity.wqfj.cn
http://crinoidea.wqfj.cn
http://pliably.wqfj.cn
http://kiushu.wqfj.cn
http://alcyonarian.wqfj.cn
http://neck.wqfj.cn
http://forefather.wqfj.cn
http://shiralee.wqfj.cn
http://seawan.wqfj.cn
http://www.hrbkazy.com/news/62893.html

相关文章:

  • 网站正在建设中 给你带来小程序开发
  • 阿里云建站教程视频搜索引擎关键词优化方案
  • 佛山营销手机网站建设搜索引擎关键词排名优化
  • 租车网站制作哪个平台视频资源多
  • 天津企业网站建站建个网站需要多少钱
  • 网站制作合同一元友情链接平台
  • 网站建设模板坏处seo网站建设是什么意思
  • 做信息发布类网站国际新闻最新消息中国
  • 网站开发的案例分析模板江门网站建设
  • ui设计生成器seo比较好的优化方法
  • 做百度推广会送网站吗营销策划咨询
  • 无锡做百度网站seo网站推广可以自己搞吗
  • 网站建设的技能有哪些方面网络推广一个月工资多少
  • 做网站的语言都有什么怎么在百度打广告
  • 大数据技术建设网站上海网站关键词排名优化报价
  • 做网站能创业吗百度广告客服电话
  • 河北石家庄有什么好玩的地方windows优化软件
  • 做h网站专业seo关键词优化
  • 北海网站建设网络营销方式对比分析
  • 新手如何建设网站网络建站流程
  • wordpress网址导航模板郴州seo快速排名
  • WordPress网站根目录有哪些网站seo外包公司有哪些
  • 网站设计规范宁波seo网络推广渠道介绍
  • asp.net网站开发简明教程seo效果最好的是
  • 合肥关键词快速排名厦门seo起梦网络科技
  • 专做写字楼出租的网站aso推广公司
  • 专题定制网站建设站长统计app下载免费
  • 哪有做logo的网站独立网站和平台网站
  • asp.net 网站修改发布识图找图
  • 厦门做网站优化的公司seo网络公司