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

建站一条龙的服务流程是怎么样的wordpress恢复源代码

建站一条龙的服务流程是怎么样的,wordpress恢复源代码,检察门户网站建设,怎么seo网站关键词优化文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享? 踩过的坑没必要让别人在再踩,自己复盘也能加深记忆。利己利人、所谓双赢。 面试官: 公平锁与非公平锁是怎么…

文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享? 踩过的坑没必要让别人在再踩,自己复盘也能加深记忆。利己利人、所谓双赢。

面试官: 公平锁与非公平锁是怎么实现的?

参考答案:

在Java中实现锁的方式有两种,一种是使用Java自带的关键字synchronized对相应的类或者方法以及代码块进行加锁,另一种是ReentrantLock,前者只能是非公平锁,而后者是默认非公平但可实现公平的一把锁。

ReentrantLock是基于其内部类FairSync(公平锁)和NonFairSync(非公平锁)实现的,并且它的实现依赖于Java同步器框架AbstractQueuedSynchronizer(AQS),AQS使用一个整形的volatile变量state来维护同步状态,这个volatile变量是实现ReentrantLock的关键。我们来看一下ReentrantLock的类图:

在这里插入图片描述
ReentrantLock 的公平锁和非公平锁都委托了 AbstractQueuedSynchronizer#acquire 去请求获取。

public final void acquire(int arg) {     if (!tryAcquire(arg) &&         acquireQueued(addWaiter(Node.EXCLUSIVE), arg))         selfInterrupt(); }
  • tryAcquire 是一个抽象方法,是公平与非公平的实现原理所在。

  • addWaiter 是将当前线程结点加入等待队列之中。公平锁在锁释放后会严格按照等到队列去取后续值,而非公平锁在对于新晋线程有很大优势。

  • acquireQueued 在多次循环中尝试获取到锁或者将当前线程阻塞。

  • selfInterrupt 如果线程在阻塞期间发生了中断,调用 Thread.currentThread().interrupt() 中断当前线程。

公平锁和非公平锁在说的获取上都使用到了 volatile 关键字修饰的state字段, 这是保证多线程环境下锁的获取与否的核心。但是当并发情况下多个线程都读取到 state == 0时,则必须用到CAS技术,一门CPU的原子锁技术,可通过CPU对共享变量加锁的形式,实现数据变更的原子操作。volatile 和 CAS的结合是并发抢占的关键。

  • 公平锁FairSync

公平锁的实现机理在于每次有线程来抢占锁的时候,都会检查一遍有没有等待队列,如果有, 当前线程会执行如下步骤:

if (!hasQueuedPredecessors() && compareAndSetState(0, acquires)) {        setExclusiveOwnerThread(current);     return true;  }

其中hasQueuedPredecessors是用于检查是否有等待队列的:

public final boolean hasQueuedPredecessors() {     Node t = tail; // Read fields in reverse initialization order     Node h = head;     Node s;     return h != t &&         ((s = h.next) == null || s.thread != Thread.currentThread()); }
  • 非公平锁NonfairSync

非公平锁在实现的时候多次强调随机抢占:

if (c == 0) {  if (compareAndSetState(0, acquires)) {   setExclusiveOwnerThread(current);   return true;      } } 

与公平锁的区别在于新晋获取锁的进程会有多次机会去抢占锁,被加入了等待队列后则跟公平锁没有区别。

http://www.yayakq.cn/news/992742/

相关文章:

  • 望野 王绩网站优化快速排名软件
  • 山东住房和城乡建设局网站首页百度联盟 网站备案信息
  • 驻马店百牛网站建设网站模板库免费
  • 网站建设的可用性免费网站后台
  • 男女做羞羞漫画网站颜色搭配的网站
  • 海南专业做网站的公司wordpress do_action 返回值
  • 网站制作培训机构微信怎么开店
  • 中山网站百度优化宁波建设网证书查询平台官网
  • 南阳企业网站wordpress去
  • 秦皇岛手机网站制作公司如何建设自己的网站 知乎
  • google网站dw做的网站解压后为什么没了
  • 没网站做推广自己电脑上做的网站 怎么让别人看
  • 安庆专业网站建设公做信息图的免费网站
  • 会计信息网站建设的意思网站与微信对接
  • 怎么做教育培训网站万众城网站建设
  • 防止网站扫描wordpress模板获取数据库
  • 淘宝网站的推广与优化汽车可以做哪些广告视频网站
  • php网站开发外文翻译如何在淘宝客上做自己的网站
  • 成都网站制作哪家好兰州中川国际机场电话
  • 个人网站建设详细教程广西网站建设培训
  • 集团公司网站改版方案网站建设费税率多少钱
  • 镇江网站制作申请网址怎么申请的
  • 一站式推广平台用dw做购票网站
  • 制作网站搭建网站项目怎么样谁做的怀来吧网站
  • 网站空间 流量深圳装修公司招聘装修项目经理
  • 公司网站建设代理一般做多久如何查外贸网站外链
  • 餐厅网站建设文案书网站建设站点标题在什么位置
  • 网站建设哪里接活江浙沪做网站的公司
  • asp网站开发招聘免费做产品宣传的网站
  • 成都市建设局权益卡网站莱芜如何选择网站建设