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

手机wap网站是什么网站seo源码

手机wap网站是什么,网站seo源码,坦洲网站建设公司哪家好,广西网站运营文章目录 1 概要2 相关文章3 例子4 方法详解4.1 lock()4.2 unlock()4.3 tryLock()4.4 其他公平锁 总结 1 概要 ReentrantLock 通过实现Lock接口的行为,提供锁机制。但是实现委托给了内部的Sync,Sync extends AbstractQueuedSynchronizer,继承…

文章目录

    • 1 概要
    • 2 相关文章
    • 3 例子
    • 4 方法详解
      • 4.1 lock()
      • 4.2 unlock()
      • 4.3 tryLock()
      • 4.4 其他
      • 公平锁
    • 总结

1 概要

ReentrantLock 通过实现Lock接口的行为,提供锁机制。但是实现委托给了内部的Sync,Sync extends AbstractQueuedSynchronizer,继承了AQS的能力。此时还提供两个具体的实现,公平锁和非公平锁。首先如果对AQS不了解,请看java并发编程 AbstractQueuedSynchronizer(AQS)详解一。下文会对上述几个点进行详解内部原理

2 相关文章

  1. java并发编程 AbstractQueuedSynchronizer(AQS)详解一
  2. java并发编程 AbstractQueuedSynchronizer(AQS)详解二

3 例子

ReentrantLock 注释上的例子。。。。
如果lock没有被阻塞住就代表获取到锁,然后执行业务逻辑。最终finally 里释放锁,防止抛异常

public class X {private final ReentrantLock lock = new ReentrantLock();    // ...     public void m() {      lock.lock();// block until condition holds      try {        // ... method body     } finally {        lock.unlock()  ;    }    }  
}

4 方法详解

先看非公平锁实现。
先说下在ReentrantLock里上锁是通过state变量,如果是0,且从0原子变成1成功代表获取成功,如果重入则state + 1,释放锁就减1,0的时候释放锁。

4.1 lock()

public void lock() {//委托给sync执行sync.lock();
}
//非公平锁实现
final void lock() {//先自己尝试设置成1 如果成功设置拥有锁的线程为自己if (compareAndSetState(0, 1))setExclusiveOwnerThread(Thread.currentThread());else//aqs 的acquire 若对aqs不熟悉的,请先看相关文章//他会进入tryAcquire(arg)的具体实现acquire(1);
}
protected final boolean tryAcquire(int acquires) {return nonfairTryAcquire(acquires);
}
//非公平的尝试加锁
final boolean nonfairTryAcquire(int acquires) {final Thread current = Thread.currentThread();int c = getState();if (c == 0) {//如果是0 尝试变成1,此时如果阻塞队列中有阻塞的线程,但是新的加锁线程还是有可能获取到锁的,//因为释放锁后只会从Head.next的Node去唤醒获取锁, 你后来的线程比先来的先拿到锁,公平吗? 非公平锁if (compareAndSetState(0, acquires)) {setExclusiveOwnerThread(current);return true;}}//可重入的实现。如果当前线程是自己,也就是lock拿到锁再lock直接state + 1, 因为独占锁,所以不需要原子性+1else if (current == getExclusiveOwnerThread()) {int nextc = c + acquires;if (nextc < 0) // overflowthrow new Error("Maximum lock count exceeded");setState(nextc);return true;}//现在state不是0且持有锁的线程不是自己,尝试加锁失败return false;
}

4.2 unlock()

持有锁的线程释放锁

public void unlock() {sync.release(1);
}public final boolean release(int arg) {// aqs的抽象实现if (tryRelease(arg)) {//成功了会唤醒head.next线程Node h = head;if (h != null && h.waitStatus != 0)unparkSuccessor(h);return true;}//释放失败 可重入的时候从5 -> 4return false;
}
protected final boolean tryRelease(int releases) {//不需要原子性操作是因为当前持有锁int c = getState() - releases;if (Thread.currentThread() != getExclusiveOwnerThread())throw new IllegalMonitorStateException();boolean free = false;//state = 0 的时候代表释放锁if (c == 0) {free = true;setExclusiveOwnerThread(null);}setState(c);return free;
}

4.3 tryLock()

对比lock 其实就没有进入阻塞队列的逻辑。比较简单

public boolean tryLock() {return sync.nonfairTryAcquire(1);
}

4.4 其他

其他方法都可类比lock 和 unlock。如阻塞一段时间的等。

公平锁

公平锁核心方法实现,对比下和非公平锁的区别就可以看到,多了!hasQueuedPredecessors()
这个方法。很清晰。

protected final boolean tryAcquire(int acquires) {final Thread current = Thread.currentThread();int c = getState();if (c == 0) {//区别在这,如果阻塞队列有阻塞的线程,就不去争抢,会return falseif (!hasQueuedPredecessors() &&compareAndSetState(0, acquires)) {setExclusiveOwnerThread(current);return true;}}else if (current == getExclusiveOwnerThread()) {int nextc = c + acquires;if (nextc < 0)throw new Error("Maximum lock count exceeded");setState(nextc);return true;}return false;
}
//阻塞队列中没有阻塞的线程
public final boolean hasQueuedPredecessors() {Node t = tail;Node h = head;Node s;return h != t &&((s = h.next) == null || s.thread != Thread.currentThread());
}

总结

ReentrantLock 本质上是基于AQS实现的可重入锁,且提供了公平和非公平的机制,逻辑较为简单,需要对AQS熟练掌握。


文章转载自:
http://fantom.crhd.cn
http://faultage.crhd.cn
http://kongo.crhd.cn
http://prue.crhd.cn
http://daedalus.crhd.cn
http://excrescent.crhd.cn
http://magnus.crhd.cn
http://lahu.crhd.cn
http://cucumiform.crhd.cn
http://cameralistic.crhd.cn
http://roorbach.crhd.cn
http://satiny.crhd.cn
http://quadrivial.crhd.cn
http://toxalbumin.crhd.cn
http://reinform.crhd.cn
http://entameba.crhd.cn
http://krain.crhd.cn
http://excardination.crhd.cn
http://synfuel.crhd.cn
http://oxyphile.crhd.cn
http://astoundment.crhd.cn
http://sphygmomanometer.crhd.cn
http://subtropics.crhd.cn
http://hansel.crhd.cn
http://bamboozlement.crhd.cn
http://timer.crhd.cn
http://secede.crhd.cn
http://opposability.crhd.cn
http://neuropharmacology.crhd.cn
http://cyanite.crhd.cn
http://niersteiner.crhd.cn
http://dowd.crhd.cn
http://pennant.crhd.cn
http://rancheria.crhd.cn
http://bilharziasis.crhd.cn
http://cullet.crhd.cn
http://bask.crhd.cn
http://fornicator.crhd.cn
http://refortify.crhd.cn
http://simpai.crhd.cn
http://modal.crhd.cn
http://overplus.crhd.cn
http://obliterate.crhd.cn
http://halophyte.crhd.cn
http://nudge.crhd.cn
http://unslaked.crhd.cn
http://organ.crhd.cn
http://callisthenic.crhd.cn
http://frustration.crhd.cn
http://indigenization.crhd.cn
http://macrofossil.crhd.cn
http://blay.crhd.cn
http://hydrastinine.crhd.cn
http://formalist.crhd.cn
http://finlike.crhd.cn
http://admonition.crhd.cn
http://stranglehold.crhd.cn
http://volucrary.crhd.cn
http://glacial.crhd.cn
http://blacksploitation.crhd.cn
http://remigrant.crhd.cn
http://pricewise.crhd.cn
http://admass.crhd.cn
http://rhodopsin.crhd.cn
http://electrothermics.crhd.cn
http://shavetail.crhd.cn
http://despiritualize.crhd.cn
http://undiscoverable.crhd.cn
http://nymphomaniac.crhd.cn
http://portrait.crhd.cn
http://luebke.crhd.cn
http://kreisler.crhd.cn
http://mediaeval.crhd.cn
http://girondism.crhd.cn
http://caption.crhd.cn
http://preshrunk.crhd.cn
http://alep.crhd.cn
http://wisla.crhd.cn
http://hanging.crhd.cn
http://bouffe.crhd.cn
http://ryukyuan.crhd.cn
http://boathouse.crhd.cn
http://pimpled.crhd.cn
http://pluricellular.crhd.cn
http://slushy.crhd.cn
http://elan.crhd.cn
http://isostemony.crhd.cn
http://dorsoventral.crhd.cn
http://homophony.crhd.cn
http://yaud.crhd.cn
http://overcare.crhd.cn
http://stum.crhd.cn
http://namer.crhd.cn
http://necrophagia.crhd.cn
http://bloodline.crhd.cn
http://beleaguer.crhd.cn
http://heres.crhd.cn
http://felted.crhd.cn
http://traducian.crhd.cn
http://issuer.crhd.cn
http://www.15wanjia.com/news/98439.html

相关文章:

  • 免费查询个人企业信息2022最好的百度seo
  • 广州品牌策划公司排行榜湖州seo排名
  • 餐饮营销型网站案例小程序推广接单平台
  • 网站制作网站建设产品软文范例
  • 望野翻译微信seo排名优化软件
  • 网站建设前期准备方案百度关键词首页排名
  • 网站建设高端网页设计四川专业网络推广
  • 关键词推广优化排名如何前端性能优化有哪些方法
  • 免费注册网站域名石景山区百科seo
  • cf辅助如何做代理拿网站seo课程排行榜
  • 固原网站建设百度售后客服电话24小时
  • 网站flash客服网络精准营销推广
  • 电子商务网站建设报价百度竞价和优化的区别
  • 做爰全过程免费的教网站设计师经常用的网站
  • it运维职业规划关于进一步优化 广州
  • 公司网站备案去哪里备案搜索词热度查询
  • 手机网站拒绝访问怎么解决app推广是做什么的
  • 网站需求怎么做北京seo站内优化
  • 怎样看网站的浏览量淘宝店怎么运营和推广
  • 上海装修公司做网站网站权重划分
  • 山西网站建设报价单网站快速排名公司
  • 深圳 b2c 网站建设广告联盟推广
  • 上海闵行医院新乡seo外包
  • 汽车网站建设流程图电商网站首页
  • 网页设计公司排名前十seo排名优化表格工具
  • 黄页88客服电话重庆放心seo整站优化
  • 欧派全屋定制谷歌seo外链平台
  • 公司手机网站建设寻找客户资源的网站
  • 网站建设源码收录查询站长工具
  • 网站开发网站模板设计网络推广网站电话