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

公司网站建设中恒建设集团有限公司动漫制作专业主修课程

公司网站建设中恒建设集团有限公司,动漫制作专业主修课程,猎头公司面试一般会问什么问题,陕西通达工程建设有限公司网站在并发编程领域#xff0c;AQS号称是并发同步组件的基石#xff0c;很多并发同步组件都是基于AQS实现#xff0c;所以想掌握好高并发编程#xff0c;你需要掌握好AQS。 本篇主要通过对AQS的实现原理、数据模型、资源共享方式、获取锁的过程#xff0c;让你对AQS的整体设计… 在并发编程领域AQS号称是并发同步组件的基石很多并发同步组件都是基于AQS实现所以想掌握好高并发编程你需要掌握好AQS。 本篇主要通过对AQS的实现原理、数据模型、资源共享方式、获取锁的过程让你对AQS的整体设计有清晰了解让你迈出高并发编程的第一步。 AQS AQSAbstractQueuedSynchronizer就是一个抽象的队列同步器AQS定义了一套多线程访问共享资源的同步器框架许多同步类实现都依赖于它。 AQS的主要作用是为Java中的并发同步组件提供统一的底层支持比如大家熟知的 ReentrantLock Semaphore CountDownLatch CyclicBarrier 等并发类均是基于AQS来实现的。 AQS的数据模型 AQS 使用上图的资源变量 state来表示同步状态通过内置的 CLH FIFO 队列来完成获取资源线程的排队工作这里会涉及到三个要素 1.AQS的三个核心成员变量 共享资源volatile int state代表共享状态 队头节点head头节点 队尾节点tail尾节点 head、tail、state三个变量都是volatile的通过volatile来保证共享变量的可见性。 2.AQS中state状态的变更是基于CAS实现的 主要有三种方法 getState setState compareAndSetState state状态通过volatile保证共享变量的可见性再由CAS 对该同步状态进行原子操作从而保证原子性和可见性。 3.CLH队列FIFO队列 CLH队列通过内置的FIFO队列Node来实现来完成线程等待排队 多线程争用资源被阻塞时会进入此队列。 AQS资源共享方式 AQS定义两种资源共享方式 1.独占锁Exclusive 独占模式下时其他线程试图获取该锁将无法取得成功只有一个线程能执行如ReentrantLock采用独占模式。 ReentrantLock还可以分为公平锁和非公平锁 公平锁按照线程在队列中的排队顺序先到者先拿到锁 非公平锁当线程要获取锁时无视队列顺序直接去抢锁谁抢到就是谁的 2.共享锁shared 多个线程获取某个锁可能会获得成功多个线程可同时执行如Semaphore、CountDownLatch。 AQS的锁获取与释放原理 1.线程获取锁流程 线程A获取锁state将0置为1线程A占用 在A没有释放锁期间线程B也来获取锁线程B获取state为1表示线程被占用线程B创建Node节点放入队尾tail并且阻塞线程B 同理线程C获取state为1表示线程被占用线程C创建Node节点放入队尾且阻塞线程 2.线程释放锁流程 线程A执行完将state从1置为0 唤醒下一个Node B线程节点然后再删除线程A节点 线程B占用获取state状态位执行完后唤醒下一个节点 Node C,再删除线程B节点 更加详细的锁获取和释放过程建议通过查看源码的方式学习AQS独占模式和共享模式下的获取锁过程。 AQS总结 本文主要介绍AQS的数据模型、CLH队列、资源共享方式、以及锁的获取与释放流程来介绍AQS的实现原理 让大家能对AQS有一个整体的了解只有对整体的设计方向有清晰了解再去跟踪学习源码就会比较轻松了。 后续将详细介绍基于AQS实现的同步组件ReentrantLock、Semaphore、CountDownLatch。 更多高并发编程系列请查看 高并发编程系列NIO、BIO、AIO的区别及NIO的应用和框架选型 高并发编程系列ConcurrentHashMap的实现原理(JDK1.7和JDK1.8) 高并发编程系列CountDownLatch、Semaphore等4大并发工具类详解 高并发编程系列并发容器的原理7大并发容器详解、及使用场景 高并发编程系列4种常用Java线程锁的特点性能比较、使用场景 Java并发编程系列Java线程池的使用方式核心运行原理、以及注意事项 你可能也喜欢: Java多线程系列(四)4种常用Java线程锁的特点性能比较、使用场景Java多线程系列(九)CountDownLatch、Semaphore等4大并发工具类详解Java多线程系列(一)最全面的Java多线程学习概述Java多线程系列(六)深入详解Synchronized同步锁的底层实现Java多线程系列(五)线程池的实现原理、优点与风险、以及四种线程池实现Java多线程系列(七)并发容器的原理7大并发容器详解、及使用场景
http://www.zqtcl.cn/news/219134/

相关文章:

  • 深圳网站建设微赢天下做视频网站服务器多少钱
  • 中小企业网站建设与管理课后答案wordpress主题 亚马逊
  • 网站制作关键技术上海网站建设收费
  • 深圳做互联网教网站公司集团管理软件
  • 华宁网站建设网站建设与维护新的体会
  • 网站后台清空北京网站建设厂家
  • 济南建设银行网站应用制作app软件
  • 网站开发实习个人小结关于做展厅的网站
  • 网站设计三把火如何制作动漫网站模板
  • 重庆做网站 哪个好些嘛开通qq空间申请网址
  • 制作网站 太原买的电脑没有wordpress
  • 图书馆建设投稿网站可信网站认证logo
  • 专做阀门网站网站如何做银联在线支付
  • 南通网站seo网页制作图片轮播
  • 高端品牌网站建设哪家好中医网站模板
  • 怎么做多语言网站图片添加文字在线制作
  • js特效演示网站wordpress本地视频
  • 徐州做网站哪个好上海国际人才网
  • 黑龙江省城乡和住房建设厅网站首页公司营业执照查询
  • 锦州北京网站建设支付公司网站建设会计分录
  • 泉州做网站优化价格软件公众号开发
  • 商丘旅游网站的建设攀枝花城市建设网站
  • 网站主页设计素材一条龙做网站
  • 咖啡店网站首页怎么做163邮箱注册
  • 网站开发开源程序网站建设及推广销售话术
  • 门户网站和官网的区别美间在线设计平台
  • 淮南制作网站游戏代理哪个平台正规
  • seo网站推广软件 快排手机网页小游戏
  • 上海免费网站建设品牌长沙com建站网站设计
  • 大网站成本品牌设计风格