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

网站域名哪看许昌市住房建设局网站

网站域名哪看,许昌市住房建设局网站,说说刷赞网站推广,郑州轻工业大学教务网络管理系统文章目录 可重入锁#xff08;ReentrantLock#xff09;知识总结1. 可重入锁概念与特点2. 基本语法与使用注意事项3. 底层实现原理4. 面试回答要点 synchronized与lock的区别死锁相关面试题讲解死锁产生的四个条件ConcurrentHashMap2. JDK1.7的ConcurrentHashMap结构添加数据… 文章目录 可重入锁ReentrantLock知识总结1. 可重入锁概念与特点2. 基本语法与使用注意事项3. 底层实现原理4. 面试回答要点 synchronized与lock的区别死锁相关面试题讲解死锁产生的四个条件ConcurrentHashMap2. JDK1.7的ConcurrentHashMap结构添加数据逻辑存在问题 3. JDK1.8的ConcurrentHashMap结构优化保证线程安全方式 4. 对比总结底层数据结构锁的方式 导致并发程序出现问题的根本原因 可重入锁ReentrantLock知识总结 1. 可重入锁概念与特点 概念ReentrantLock是可重入锁同一线程可多次获取该锁。特点 可中断与synchronized不同ReentrantLock可在获取锁过程中被中断。可设置超时时间获取锁时可设置超时时间超时未获取到锁可放弃避免无限等待。支持公平锁和非公平锁默认是非公平锁也可通过构造函数设置为公平锁。公平锁按等待顺序获取锁非公平锁允许插队提高性能但可能导致某些线程长时间等待。支持多个条件变量类似synchronized中的wait/notify方法可创建多个条件变量控制线程等待和唤醒更灵活。 2. 基本语法与使用注意事项 语法 创建ReentrantLock对象。在try块中调用lock方法获取锁。在finally块中调用unlock方法释放锁确保锁一定释放避免死锁。 注意事项必须在finally块中释放锁防止异常导致锁未释放引发死锁。 3. 底层实现原理 基于AQS实现ReentrantLock底层依赖AbstractQueuedSynchronizerAQS实现AQS维护同步状态和线程等待队列。构造函数与锁类型 无参构造函数默认创建非公平锁。带参数构造函数可传入特定参数创建公平锁或非公平锁。 工作方式 非公平锁获取锁线程先尝试通过CAS操作修改同步状态state成功则获取锁并设置当前线程为持有锁线程失败则进入等待队列但进入队列前仍会再次尝试获取锁插队行为若此时锁可用可直接获取。公平锁获取锁线程先检查等待队列中是否有前驱节点有则进入等待队列按先来先得顺序获取锁无前驱节点则尝试通过CAS操作获取锁。锁释放释放锁时唤醒等待队列中的线程重新竞争锁。 4. 面试回答要点 强调ReentrantLock是可重入锁同一线程可多次调用lock方法。提及底层主要使用CAS和AQS实现重点解释AQS工作原理。说明ReentrantLock支持公平锁和非公平锁无参构造函数默认是非公平锁可传参设置公平锁。 文章目录 可重入锁ReentrantLock知识总结1. 可重入锁概念与特点2. 基本语法与使用注意事项3. 底层实现原理4. 面试回答要点 synchronized与lock的区别死锁相关面试题讲解死锁产生的四个条件ConcurrentHashMap2. JDK1.7的ConcurrentHashMap结构添加数据逻辑存在问题 3. JDK1.8的ConcurrentHashMap结构优化保证线程安全方式 4. 对比总结底层数据结构锁的方式 导致并发程序出现问题的根本原因 synchronized与lock的区别 面试题引入 题目synchronized与lock有什么区别。回答思路从语法、功能、性能三个层面回答重点在功能层面。 语法层面区别 实现方式synchronized是关键字由JVM提供C语言实现lock由JDK提供用Java语言实现。锁释放机制使用synchronized时退出同步块会自动释放锁lock需调用unlock才能释放锁。 功能层面区别 相同点都属于悲观锁具备互斥同步和锁重入功能。不同点lock提供更多功能如公平锁、可打断、可超时、多条件变量等。 公平锁使用ReentrantLock时可通过带条件的构造函数传true实现。可打断锁 演示代码创建t1线程使用lock.Interruptibly()方法开启可打断锁若被打断抛异常否则正常进入锁并释放锁。 可超时锁 演示代码线程获取锁调用tryLock方法成功返回true失败返回false可设置超时时间超时后放弃获取锁或获取成功执行业务。 多条件变量 演示代码创建锁后可多次调用new Condition声明多个条件变量线程可按条件等待 适合不同场景的实现及读写锁功能层面 ReentrantLock与synchronized类似但功能更多。读写锁ReentrantReadWriteLock能支撑更高并发量读操作可不加锁写操作需加锁适用于大量读需求的场景。 性能层面区别 无竞争时synchronized做了很多优化如偏向锁、轻量级锁性能还行。竞争激烈时lock往往提供更好性能。 死锁相关面试题讲解 死锁产生条件及示例演示 产生条件一个线程同时获取多把锁时易发生死锁。示例代码分析代码中有object a和object b两个对象t1线程先获取a锁在a锁代码块中再获取b锁t2线程先获取b锁在b锁代码块中再获取a锁然后开启两个线程程序会一直运行出现死锁。 JDK工具诊断死锁问题介绍 死锁情况t1持有a锁等待b锁t2持有b锁等待a锁形成死锁。工具介绍使用jdk提供的jps和jstack工具诊断死锁。jps可输出当前运行的所有进程状态信息jstack可查看java进程内线程的堆栈信息。诊断步骤先使用jps找到死锁代码的进程id如24380再使用jstack加进程id查看日志信息日志最后会提示死锁分析t1、t2线程等待和锁住的锁以及可能出现问题的代码行数根据提示打开代码分析多把锁导致的死锁问题并修改。 JDK可视化工具jconsole检查死锁 工具介绍jdk自带可视化工具jconsole可用于jvm的内存、线程、类的监控。检查步骤打开jconsole选择本地连接找到要监控的进程如24380选择不安全链接点击线程选项卡中的检查死锁可看到t2、t1线程发生死锁及相关日志根据提示检查对应代码解决死锁问题。 VisualVM检查死锁及总结 检查流程找到VisualVM安装目录与jconsole相同双击打开在本地选择要检查的进程如24380切换到进程权限会提示检查到死锁点击线程dump获取更多信息日志中可看到与jstack类似的t1、t2线程等待和锁住锁的信息根据提示的代码行号到附近查找问题。总结死锁产生条件是一个线程同时获得多把锁。诊断方法可先使用jps和jstack也可使用jconsole或VisualVM检查死锁问题根据提示分析代码解决死锁。 死锁产生的四个条件 死锁是指在多道程序环境下多个进程因竞争资源而造成的一种僵局若无外力作用这些进程都将无法向前推进。在操作系统中死锁产生的条件有以下四个 互斥条件指进程对所分配到的资源进行排他性使用即在一段时间内某资源只由一个进程占用。如果此时还有其他进程请求该资源则请求者只能等待直至占有该资源的进程释放。请求和保持条件指进程已经保持了至少一个资源但又提出了新的资源请求而该资源已被其他进程占有此时请求进程被阻塞但对自己已获得的资源保持不放。不可剥夺条件指进程已获得的资源在未使用完之前不能被剥夺只能在使用完时由自己释放。环路等待条件指在发生死锁时必然存在一个进程-资源的环形链即进程集合{P0P1P2···Pn}中的P0正在等待一个P1占用的资源P1正在等待P2占用的资源……Pn正在等待已被P0占用的资源。 这四个条件是死锁产生的必要条件只要系统发生死锁这些条件必然成立而只要上述条件之一不满足就不会发生死锁。在实际操作系统中为了避免死锁的发生通常会采用一些策略来破坏这些条件例如资源分配策略、死锁检测与恢复机制等。 ConcurrentHashMap Java 8的 ConcurrentHashMap 是线程安全的哈希表有如下关键特性 数据结构采用数组加链表加红黑树结构。初始为数组链表长度达阈值8且桶数超64时链表转红黑树提升查找效率。并发控制摒弃Java 7的分段锁改用更细粒度的锁机制。使用 CAS 操作更新部分内容对单个桶用 synchronized 同步降低锁粒度提升并发性能。常用方法put 用于插入键值对get 根据键取值compute 对指定键计算并更新或插入值forEach 遍历键值对。适用场景适用于高并发、读多写少场景以及多线程环境下需线程安全哈希表的情况。 2. JDK1.7的ConcurrentHashMap 结构 整体结构采用分段的数组加链表实现。Segment数组不能扩容每个下标对应另一个可扩容数组该数组可挂链表或直接存储数据。 添加数据逻辑 计算key哈希值定位Segment数组下标。找到下标后用ReentrantLock锁住该位置。再次通过哈希值定位哈希表数组位置存储数据。 存在问题 性能低多个key定位到同一Segment下标时只有一个线程能操作。数组不能扩容Segment数组长度在创建时确定。 3. JDK1.8的ConcurrentHashMap 结构优化 放弃Segment数组采用与HashMap相同结构即数组加链表加红黑树。 保证线程安全方式 添加新节点通过CAS自旋操作保证数据安全。已有链表或红黑树用synchronized锁住首节点锁力度更细效率更高。 4. 对比总结 底层数据结构 1.7分段的数组加链表。1.8数组加链表加红黑树。 锁的方式 1.7Segment数组的分段锁ReentrantLock锁住范围大。1.8添加新节点用CAS对链表或红黑树用synchronized锁首节点性能更好。 导致并发程序出现问题的根本原因 并发编程三大特性 原子性 定义线程在CPU中的操作不可暂停、中断要么执行完成要么不执行。抢票代码示例有10张票多线程抢票可能出现超卖或一张票卖给多人证明代码非原子操作。解决方法加锁synchronized关键字、lock锁使代码具有原子性。 可见性 定义一个线程对共享变量修改后要让另一个线程可见。代码示例线程一循环取反共享变量flag线程二将其改为true但线程一可能读不到该修改循环不退出。解决方法加锁性能不高或在共享变量上使用volatile。 有序性 指令重排概念处理器为提高效率可能打乱代码顺序执行可能导致问题。代码示例对共享变量x和y进行赋值和读取操作若出现x 1, y 0的情况可能是指令重排序。解决方法在共享变量上添加volatile最好在y上添加禁止指令重排序。 总结 回答导致并发程序出现问题的根本原因时需提及并发编程的三大特性及解决方法。原子性用sync或lock锁解决内存可见性推荐用volatile也可用锁有序性通过在共享变量上加volatile禁止指令重排序。
文章转载自:
http://www.morning.hpspr.com.gov.cn.hpspr.com
http://www.morning.pcbfl.cn.gov.cn.pcbfl.cn
http://www.morning.bwnd.cn.gov.cn.bwnd.cn
http://www.morning.pctql.cn.gov.cn.pctql.cn
http://www.morning.tfwg.cn.gov.cn.tfwg.cn
http://www.morning.hmwjk.cn.gov.cn.hmwjk.cn
http://www.morning.wanjia-sd.com.gov.cn.wanjia-sd.com
http://www.morning.frnjm.cn.gov.cn.frnjm.cn
http://www.morning.jbgzy.cn.gov.cn.jbgzy.cn
http://www.morning.nytpt.cn.gov.cn.nytpt.cn
http://www.morning.ttdxn.cn.gov.cn.ttdxn.cn
http://www.morning.kydrb.cn.gov.cn.kydrb.cn
http://www.morning.qcfgd.cn.gov.cn.qcfgd.cn
http://www.morning.cpktd.cn.gov.cn.cpktd.cn
http://www.morning.gjxr.cn.gov.cn.gjxr.cn
http://www.morning.kgqww.cn.gov.cn.kgqww.cn
http://www.morning.dzpnl.cn.gov.cn.dzpnl.cn
http://www.morning.yppln.cn.gov.cn.yppln.cn
http://www.morning.fbbpj.cn.gov.cn.fbbpj.cn
http://www.morning.kpgms.cn.gov.cn.kpgms.cn
http://www.morning.pphgl.cn.gov.cn.pphgl.cn
http://www.morning.bwmm.cn.gov.cn.bwmm.cn
http://www.morning.wdhlc.cn.gov.cn.wdhlc.cn
http://www.morning.wmlby.cn.gov.cn.wmlby.cn
http://www.morning.zgnng.cn.gov.cn.zgnng.cn
http://www.morning.pqktp.cn.gov.cn.pqktp.cn
http://www.morning.yqtry.cn.gov.cn.yqtry.cn
http://www.morning.kqnwy.cn.gov.cn.kqnwy.cn
http://www.morning.rmpkn.cn.gov.cn.rmpkn.cn
http://www.morning.xtdtt.cn.gov.cn.xtdtt.cn
http://www.morning.qwnqt.cn.gov.cn.qwnqt.cn
http://www.morning.djxnn.cn.gov.cn.djxnn.cn
http://www.morning.djxnw.cn.gov.cn.djxnw.cn
http://www.morning.kfrhh.cn.gov.cn.kfrhh.cn
http://www.morning.mqffm.cn.gov.cn.mqffm.cn
http://www.morning.rkyw.cn.gov.cn.rkyw.cn
http://www.morning.ylyzk.cn.gov.cn.ylyzk.cn
http://www.morning.ljygq.cn.gov.cn.ljygq.cn
http://www.morning.nrddx.com.gov.cn.nrddx.com
http://www.morning.jnrry.cn.gov.cn.jnrry.cn
http://www.morning.nhzzn.cn.gov.cn.nhzzn.cn
http://www.morning.bwqr.cn.gov.cn.bwqr.cn
http://www.morning.wtrjq.cn.gov.cn.wtrjq.cn
http://www.morning.bchhr.cn.gov.cn.bchhr.cn
http://www.morning.fndfn.cn.gov.cn.fndfn.cn
http://www.morning.xqgh.cn.gov.cn.xqgh.cn
http://www.morning.dxqwm.cn.gov.cn.dxqwm.cn
http://www.morning.mdnnz.cn.gov.cn.mdnnz.cn
http://www.morning.bydpr.cn.gov.cn.bydpr.cn
http://www.morning.qmtzq.cn.gov.cn.qmtzq.cn
http://www.morning.kxqfz.cn.gov.cn.kxqfz.cn
http://www.morning.nlbw.cn.gov.cn.nlbw.cn
http://www.morning.rjfr.cn.gov.cn.rjfr.cn
http://www.morning.huarma.com.gov.cn.huarma.com
http://www.morning.cjqcx.cn.gov.cn.cjqcx.cn
http://www.morning.rjnky.cn.gov.cn.rjnky.cn
http://www.morning.ztfzm.cn.gov.cn.ztfzm.cn
http://www.morning.wmmqf.cn.gov.cn.wmmqf.cn
http://www.morning.ffydh.cn.gov.cn.ffydh.cn
http://www.morning.mszwg.cn.gov.cn.mszwg.cn
http://www.morning.cfmrb.cn.gov.cn.cfmrb.cn
http://www.morning.rqdx.cn.gov.cn.rqdx.cn
http://www.morning.kuaijili.cn.gov.cn.kuaijili.cn
http://www.morning.msbct.cn.gov.cn.msbct.cn
http://www.morning.bgpch.cn.gov.cn.bgpch.cn
http://www.morning.nsfxt.cn.gov.cn.nsfxt.cn
http://www.morning.mbqyl.cn.gov.cn.mbqyl.cn
http://www.morning.gtnyq.cn.gov.cn.gtnyq.cn
http://www.morning.gxtfk.cn.gov.cn.gxtfk.cn
http://www.morning.bwqcx.cn.gov.cn.bwqcx.cn
http://www.morning.btmwd.cn.gov.cn.btmwd.cn
http://www.morning.bpmnz.cn.gov.cn.bpmnz.cn
http://www.morning.kjkml.cn.gov.cn.kjkml.cn
http://www.morning.bpmz.cn.gov.cn.bpmz.cn
http://www.morning.lthtp.cn.gov.cn.lthtp.cn
http://www.morning.bxqtq.cn.gov.cn.bxqtq.cn
http://www.morning.mjgxl.cn.gov.cn.mjgxl.cn
http://www.morning.rltw.cn.gov.cn.rltw.cn
http://www.morning.mtyhk.cn.gov.cn.mtyhk.cn
http://www.morning.gzttoyp.com.gov.cn.gzttoyp.com
http://www.tj-hxxt.cn/news/269822.html

相关文章:

  • 做一个响应式网站价格怎么做网站内部链接
  • 佛山市外贸企业高端网站设计公司网站设计用什么
  • 验证码网站搭建网站备案费用多少
  • 赛车网站开发宁德网站建设51yunsou
  • 城乡规划师证报考条件北京大型网站优化
  • 做系统和做网站哪个简单一些晋江网站建设qzdzi
  • 做网站伊犁哈萨克自治州售后网站用什么模板
  • 烟台市两学一做网站百度直播推广
  • 中堂镇做网站深圳app推广平台
  • 烟台网站制作厂家联系方式wordpress wp_links
  • 国内工业设计网站建设网站的主要流程有哪些
  • 网站建设的ppt模板女生做网站编辑好不好
  • 网站后台演示徐州建设局网站
  • 哪些网站可以做化妆品广告学网站建设怎么样
  • 做建材营销型网站安卓小项目源码免费网站
  • 网站未备案或已封禁北京形势紧张
  • 网站建设在哪里推广民权平台网站建设
  • 怎么样做网站赚钱吗淄博做网站公司有哪些
  • 山西省建设厅招标网站首页英文网站怎么做
  • 网站建设shundeit怎么登录微信小程序平台
  • 网站查询关键词排名软件游戏平台网站建设
  • 开发一个网站 要多久珠海pc网站建设
  • 注册网站免费阿里巴巴国际站特点
  • 做网站文件下载网页的网站建设
  • 深圳城乡和建设局网站企业手机网站建设案例
  • 电商设计素材网站推荐论坛怎样发帖推广
  • 网站建设包括哪些方面android开发菜鸟教程
  • 网站建设高端wordpress淘客响应式主题
  • 石家庄市新华区建设局网站夏津网站建设费用
  • 自建个网站怎么做快速建立平台网站开发网站模板设计