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

如何设计旅游网站的域名天津网站制作首页在线咨询

如何设计旅游网站的域名,天津网站制作首页在线咨询,wordpresS追踪访问轨迹,wordpress自动保存图片AQS底层原理AQS(AbstractQueuedSynchronizer)是一个抽象同步队列#xff0c;JUC(java.util.concurrent)中很多同步锁都是基于AQS实现的。AQS的基本原理就是当一个线程请求共享资源的时候会判断是否能够成功操作这个共享资源#xff0c;如果可以就会把这个共享资源设置为锁定状…AQS底层原理AQS(AbstractQueuedSynchronizer)是一个抽象同步队列JUC(java.util.concurrent)中很多同步锁都是基于AQS实现的。AQS的基本原理就是当一个线程请求共享资源的时候会判断是否能够成功操作这个共享资源如果可以就会把这个共享资源设置为锁定状态如果当前共享资源已经被锁定了那就把这个请求的线程阻塞住也就是放到队列中等待。state变量AQS中有一个被volatile声明的变量用来表示同步状态提供了getState()、setState()和compareAndSetState()方法来修改state状态的值// 返回同步状态的当前值protected final int getState() {return state;}// 设置同步状态的值protected final void setState(int newState) {state newState;}// CAS操作修改state的值protected final boolean compareAndSetState(int expect, int update) {return unsafe.compareAndSwapInt(this, stateOffset, expect, update);}对共享资源的操作方式上面说了AQS是JUC中很多同步锁的底层实现锁也分很多种有像ReentrantLock这样的独占锁也有ReentrantReadWriteLock这样的共享锁所以AQS中也必然是包含这两种操作方式的逻辑独占式获取资源的时候会调用acquire()方法这里面会调用tryAcquire()方法去设置state变量如果失败的话就把当前线程放入一个Node中存入队列public final void acquire(int arg) {if (!tryAcquire(arg) acquireQueued(addWaiter(Node.EXCLUSIVE), arg))selfInterrupt();}释放资源的时候是调用realase()方法会调用tryRelease()方法修改state变量调用成果后会去唤醒队列中Node里的线程unparkSuccessor()方法就是判断当前state变量是否符合唤醒的标准如果合适就唤醒否则继续放回队列public final boolean release(int arg) {if (tryRelease(arg)) {Node h head;if (h ! null h.waitStatus ! 0)unparkSuccessor(h);return true;}return false;}注意tryAcquire()和tryRelease()方法在AQS中都是空的前面说了JUC中很多同步锁都是基于AQS实现所以加锁和释放锁的逻辑都还不确定因此是要在这些同步锁中实现这两个方法protected boolean tryAcquire(int arg) {throw new UnsupportedOperationException();}protected boolean tryRelease(int arg) {throw new UnsupportedOperationException();}共享式获取资源会调用acquireShared()方法会调用tryAcquireShared()操作state变量如果成功就获取资源失败则放入队列public final void acquireShared(int arg) {if (tryAcquireShared(arg) 0)doAcquireShared(arg);}释放资源是调用releaseShared()方法会调用tryReleaseShared()设置state变量如果成功就唤醒队列中的一个Node里的线程不满足唤醒条件则还放回队列中public final boolean releaseShared(int arg) {if (tryReleaseShared(arg)) {doReleaseShared();return true;}return false;}和独占式一样tryAcquireShared()和tryReleaseShared()也是需要子类来提供protected int tryAcquireShared(int arg) {throw new UnsupportedOperationException();}protected boolean tryReleaseShared(int arg) {throw new UnsupportedOperationException();}条件变量ConditionCondition中的signal()和await()方法类似与notify()和wait()方法需要和AQS锁配合使用。public static void main(String[] args) throws InterruptedException {ReentrantLock lock new ReentrantLock();Condition condition lock.newCondition();Thread thread1 new Thread(new Runnable() {Overridepublic void run() {lock.lock();System.out.println( t1 加锁);System.out.println(t1 start await);try {condition.await();} catch (InterruptedException e) {e.printStackTrace();}System.out.println(t1 end await);lock.unlock();}});thread1.start();Thread thread2 new Thread(new Runnable() {Overridepublic void run() {lock.lock();System.out.println( t2 加锁);System.out.println(t2 start signal);condition.signal();System.out.println(t2 end signal);lock.unlock();}});thread2.start();}在AQS中的原理上面lock.newCondition()其实是new一个AQS中ConditionObject内部类的对象出来这个对象里面有一个队列当调用await()方法的时候会存入一个Node节点到这个队列中并且调用park()方法阻塞当前线程释放当前线程的锁。而调用singal()方法则会移除内部类中的队列头部的Node然后放入AQS中的队列中等待执行机会同样的AQS并没有实现newCondition()方法也是需要子类自己去实现总结本文内容大部分都是阅读了这本书的内容主要讲了整个AQS的大致原理和几个最重要的方法其实整个AQS的源码是很复杂的但是了解大致原理已经对我们熟悉运用那些JUC中的同步锁有很大的帮助。
http://www.zqtcl.cn/news/948420/

相关文章:

  • 胶州企业网站设计十大互联网营销公司
  • 视频解析wordpresswordpress 优化版本
  • 柳州网站建设哪家便宜广东省建设厅三库一平台
  • 云南城市建设官方网站wordpress和织梦哪个好
  • 国外企业招聘网站专门做外贸的网站有哪些
  • 陕西交通建设集团网站营销公司是什么意思
  • 网站建设自建与租用区别杭州建设局网站官网
  • 广告公司企业介绍seo研究中心怎么样
  • 苏州网站建设熊掌岳阳做网站哪家好
  • 深圳网站制作公司报价单宝塔做两个网站6
  • 百度站长工具怎么查排名贵港网站制作
  • 运城个人网站建设学校网站建设目的
  • 住房城乡建设部门门户网站购物网站排名大全
  • 手机网站平台江门网站建设模板
  • 做本地网站需要什么资质百度多长时间收录网站
  • 网站建设公司使用图片侵权使用者有无责任夸克免费空间
  • 网站建设制作鸿运通做网站能用python吗
  • 站长源码之家Wordpress 新建标签
  • 太原网站建设详细策划如何建设网站简答题
  • 乡村生态旅游网站建设方案如何做网站的导航栏
  • wordpress百度百科网站开发 seo
  • 网站主机名wordpress主题修改底部版权
  • 网站官网怎么做龙岩iot开发福建小程序建设
  • 哪个学校设有网站开发专业北京有哪些网站公司
  • 做网站需要的带宽上行还是下行湖南竞网科技有限公司
  • 帝国cms企业门户网站仿站视频教程 网盘互联网金融p2p网站建设
  • 个人网站备案涉及支付宝做二手的网站都有哪些
  • 如何给网站做宣传导航栏网页怎么制作
  • 返利网站建设高校精神文明建设网站
  • 河北百度推广seoseo全网优化指南