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

建设网站的时候长岛网站建设

建设网站的时候,长岛网站建设,wordpress标签的调用,北京页面设计制作开题#xff1a;如何自己生成一把独占锁#xff1f; 1. 管程 — Java同步的设计思想 管程#xff1a;指的是管理共享变量以及对共享变量的操作过程#xff0c;让他们支持并发。 互斥#xff1a;同一时刻只允许一个线程访问共享资源#xff1b; 同步#xff1a;线程之间…         开题如何自己生成一把独占锁 1. 管程 — Java同步的设计思想 管程指的是管理共享变量以及对共享变量的操作过程让他们支持并发。         互斥同一时刻只允许一个线程访问共享资源         同步线程之间如何通信、协作。 MESA模型  在管程的发展史上先后出现过三种不同的管程模型分别是Hasen模型、Hoare模型和MESA模型。现在正在广泛使用的是 MESA模型 。                  管程中引入了条件变量的概念而且每个条件变量都对应有一个等待队列。条件变量和等待队列的作用是解决线程之间的同步问题。         Java实现管程有两种方式                 1.一种基于Object的Monitor的机制用于synchronized内置锁实现                 2.抽象队列同步器AQS用于JUC包下的Lock锁机制的实现 2. AQS原理分析  2.1 什么是AQS java.util.concurrent包中的大多数同步器实现都是围绕着共同的基础行为比如等待队列、条件队列、独占获取、共享获取等而这些行为的抽象就是基于AbstractQueuedSynchronizer简称AQS实现的AQS是一个抽象同步框架可以用来实现一个依赖状态的同步器。其实就是类似于管程的思想         JDK中提供的大多数的同步器如Lock, Latch, Barrier等都是基于AQS框架来实现的                 1. 一般是通过一个内部类Sync继承 AQS                 2. 将同步器所有调用都映射到Sync对应的方法            AQS具备的特性                1. 阻塞等待队列                2.  共享/独占                3.  公平/非公平                4.  可重入                5.  允许中断 2.2 AQS核心结构  AQS内部维护属性volatile int statestate表示资源的可用状态 State三种访问方式         getState()         setState()         compareAndSetState () 定义了两种资源访问方式 Exclusive-独占只有一个线程能执行如ReentrantLock         Share-共享多个线程可以同时执行如Semaphore/CountDownLatch AQS实现时主要实现以下几种方法          isHeldExclusively() 该线程是否正在独占资源。只有用到condition才需要去实现它。 tryAcquire(int) 独占方式。 尝试获取资源成功则返回true失败则返回false。 tryRelease(int) 独占方式。 尝试释放资源成功则返回true失败则返回false。 tryAcquireShared(int) 共享方式。 尝试获取资源。负数表示失败0表示成功但没有剩余可用资源正数表示成功且有剩余资源。 tryReleaseShared(int) 共享方式。 尝试释放资源如果释放后允许唤醒后续等待结点返回true否则返回 false。   2.3 AQS定义两种队列   同步等待队列 主要用于维护获取锁失败时入队的线程。         条件等待队列 调用await()的时候会释放锁然后线程会加入到条件队列调用signal()唤醒的时候会把条件列中的线程节点移动到同步队列中等待再次获得锁。          AQS 定义了5个队列中节点状态         1. 值为0初始化状态表示当前节点在sync队列中等待着获取锁。         2. CANCELLED值为1表示当前的线程被取消         3. SIGNAL值为-1表示当前节点的后继节点包含的线程需要运行也就是unpark         4. CONDITION值为-2表示当前节点在等待condition也就是在condition队列中         5. PROPAGATE值为-3表示当前场景下后续的acquireShared能够得以执行 同步等待队列           AQS当中的同步等待队列也称CLH队列CLH队列是Craig、Landin、Hagersten三人发明的一种基于双向链表数据结构的队列是FIFO先进先出线程等待队列Java中的CLH队列是原CLH队列的一个变种,线程由原自旋机制改为阻塞机制.         1、当前线程如果获取同步状态失败时AQS则会将当前线程已经等待状态等信息构造成一个节点Node并将其加入到CLH同步队列同时会阻塞当前线程         2、当同步状态释放时会把首节点唤醒公平锁使其再次尝试获取同步状态。         3、通过signal或signalAll将条件队列中的节点转移到同步队列。 由条件队列转化为同步队列 条件等待队列 AQS中条件队列是使用单向列表保存的用nextWaiter来连接:       1. 调用await方法阻塞线程       2. 当前线程存在于同步队列的头结点调用await方法进行阻塞 从同步队列转化到条件队列 3. ReentrantLock源码分析 ReentrantLock是一种基于AQS框架的应用实现 是JDK中的一种线程并发访问的同步手段它的功能类似于synchronized 是一种互斥锁可以保证线程安全 。 ReentrantLock基本使用方式 源码阅读过程中要关注的问题                 1.公平和非公平锁可重入锁是如何实现的                 2.设计的精髓并发场景下入队和出队操作是如何设计的                         线程竞争锁失败入队阻塞逻辑实现                         释放锁的线程唤醒阻塞线程出队竞争锁的逻辑实现
http://www.dnsts.com.cn/news/198977.html

相关文章:

  • 域名注册网站 简称怎么创建网站平台
  • 四川省城乡住房建设部网站首页google seo 优化
  • 家具网站建设wordpress文章模版
  • 17.zwd一起做网站不死鸟分享友情链接
  • 郑州网站推广电话保定建设工程信息网站
  • 网站建设的可行性分析平台开发是做什么的
  • 深圳商业网站建设怎么样网站开发背景400字
  • wordpress文章模块化插件手机网站seo软件
  • 湖南广源建设工程有限公司网站ui是什么设计
  • 廉溪区建设局网站更换网站需要备案吗
  • 莆田seo建站网站怎样做微信公众号
  • 沧州网站seo交易链接大全
  • 网站做分屏好不好ucenter wordpress
  • 做充币提现的网站自己建设网站
  • 郑州优化网站公司seo网站排名优化服务
  • 手机高端网站开发单位网站改版
  • 百度 站长工具公司简介电子版宣传册模板
  • phpcms旅游网站模板长沙岳麓区房价
  • 深圳品牌建网站营销推广案例
  • 模板建站费用南通网站建设.
  • 公众号自己做电影网站什么是电子商务?
  • a站怎么进西安维护网站
  • 制作一般网站wordpress资料图片
  • 这样做自己的网站西安网站创建
  • 编译django做的网站可视化数据平台
  • 高端大气网站鹤壁seo推广
  • 个人博客网站建设怎样建设旅游网站
  • 专门做礼品的网站新郑整站优化
  • 成都手机模板建站北京大数据公司排行
  • 做旅游网站能成功快速刷网站排名