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

网站优化标题最新域名解析

网站优化标题,最新域名解析,app软件开发公司那家好,网址是什么顾名思义,就是一种在对队列进行出队或者入队操作的时候会阻塞的队列。下面使用JDK17中的LinkedBlockingQuece进行简单的介绍。 LinkedBlockingQueue基本结构 LinkedBlockingQueue的主要结构以及构成的数据结构如下图所示。具体来说包括 存储元素的链表&#xff0…

顾名思义,就是一种在对队列进行出队或者入队操作的时候会阻塞的队列。下面使用JDK17中的LinkedBlockingQuece进行简单的介绍。

LinkedBlockingQueue基本结构

LinkedBlockingQueue的主要结构以及构成的数据结构如下图所示。具体来说包括

  • 存储元素的链表,first指针指向队头,last指针指向队尾。
  • 控制向队列中入队节点的可重入锁 putLock,以及队列满时让生产者线程排队等待的 notFull 条件等待队列。
  • 控制向队列中出队节点的可重入锁 takeLock,以及队列为空的时候让消费者排队的 notEmpty 条件等待队列。
  • 尝试入队操作的生产者线程。
  • 尝试出队操作的消费者线程。

接下来介绍LinkedBlockingQueue的几个基本操作。

入队操作:

  • put(E) 将元素入队,如果队列满了那么将操作线程放入等待队列notFull, 直到入队成功。
  • offer(E) 将元素入队,如果队列满了那么直接返回false,入队失败。

出队操作:

  • take() 将元素出队,如果队列为空那么将操作线程放入等待队列notEmpty,直到出队成功。
  • poll() 将元素出队,如果队列为空返回false,出队失败。

put,offer以及 take,poll的操作之间的不同都是在队列不满足条件的时候是将其放入条件等待队列等待队列满足条件的时候唤醒还是直接返回false表示操作失败。

出队入队的基本操作

put(E e)

具体流程如下图所示,这是一个线程安全的队列,因为每次队队列的入队出队操作必须获取锁之后才会继续运行。生产者线程在获取了putLock后判断队列是否还会达到容量,如果还有容量那么直接放入,如果队列已满那么放入notFull等待队列中。因为生产者在队尾操作,消费者在队头操作,不会相互影响,在新增节点的过程中可能会有节点出队。所以在放入元素后判断队列是否还有容量,如果有就将notFull等待队列中的线程唤醒。在释放锁后判断在插入前队列是否为空,如果为空,说明可能有消费者线程在条件等待队列中等待获取元素,那么就去唤醒notEmpty中的线程,这些线程由于之前队列为空被放入条件等待队列等待。

public void put(E e) throws InterruptedException {if (e == null) throw new NullPointerException();final int c;final Node<E> node = new Node<E>(e);final ReentrantLock putLock = this.putLock;final AtomicInteger count = this.count;putLock.lockInterruptibly();try {/** Note that count is used in wait guard even though it is* not protected by lock. This works because count can* only decrease at this point (all other puts are shut* out by lock), and we (or some other waiting put) are* signalled if it ever changes from capacity. Similarly* for all other uses of count in other wait guards.*/while (count.get() == capacity) {notFull.await();}enqueue(node);c = count.getAndIncrement();if (c + 1 < capacity)notFull.signal();} finally {putLock.unlock();}if (c == 0)signalNotEmpty();
}

take()

take操作与put操作类似,只不过操作的锁和等待队列恰好相反。

public E take() throws InterruptedException {final E x;final int c;final AtomicInteger count = this.count;final ReentrantLock takeLock = this.takeLock;takeLock.lockInterruptibly();try {while (count.get() == 0) {notEmpty.await();}x = dequeue();c = count.getAndDecrement();if (c > 1)notEmpty.signal();} finally {takeLock.unlock();}if (c == capacity)signalNotFull();return x;}

另外需要注意的是 使用的两个可重入锁为 非公平锁,也就是说队列中的顺序并不严格满足先进先出的特性。源码的解释也有点冲突。


文章转载自:
http://skirret.hwLk.cn
http://congenital.hwLk.cn
http://trimethylglycine.hwLk.cn
http://turnaround.hwLk.cn
http://bivouacked.hwLk.cn
http://linger.hwLk.cn
http://chorine.hwLk.cn
http://unfrank.hwLk.cn
http://cienaga.hwLk.cn
http://unminished.hwLk.cn
http://abloom.hwLk.cn
http://chaldaic.hwLk.cn
http://areola.hwLk.cn
http://bethlehem.hwLk.cn
http://diskdupe.hwLk.cn
http://polypnea.hwLk.cn
http://pubic.hwLk.cn
http://islam.hwLk.cn
http://hour.hwLk.cn
http://ormuzd.hwLk.cn
http://polyantha.hwLk.cn
http://comitadji.hwLk.cn
http://luminophor.hwLk.cn
http://essoin.hwLk.cn
http://creesh.hwLk.cn
http://quivive.hwLk.cn
http://salerno.hwLk.cn
http://vsf.hwLk.cn
http://zoophilism.hwLk.cn
http://iricism.hwLk.cn
http://spunbonded.hwLk.cn
http://apiaceous.hwLk.cn
http://watkins.hwLk.cn
http://hysterotely.hwLk.cn
http://partition.hwLk.cn
http://benediction.hwLk.cn
http://walker.hwLk.cn
http://transvaluation.hwLk.cn
http://horsemeat.hwLk.cn
http://patulin.hwLk.cn
http://salol.hwLk.cn
http://botanica.hwLk.cn
http://clarity.hwLk.cn
http://anadama.hwLk.cn
http://pessary.hwLk.cn
http://allodial.hwLk.cn
http://mooring.hwLk.cn
http://allo.hwLk.cn
http://honcho.hwLk.cn
http://roundheaded.hwLk.cn
http://mechlin.hwLk.cn
http://qic.hwLk.cn
http://oxyopy.hwLk.cn
http://spacecraft.hwLk.cn
http://garp.hwLk.cn
http://showing.hwLk.cn
http://ghazi.hwLk.cn
http://awing.hwLk.cn
http://laurasia.hwLk.cn
http://arachnid.hwLk.cn
http://plectra.hwLk.cn
http://tailspin.hwLk.cn
http://terminal.hwLk.cn
http://metalmark.hwLk.cn
http://apraxia.hwLk.cn
http://camera.hwLk.cn
http://patroness.hwLk.cn
http://maniform.hwLk.cn
http://africanize.hwLk.cn
http://tinpot.hwLk.cn
http://arpa.hwLk.cn
http://beekeeping.hwLk.cn
http://incalculability.hwLk.cn
http://anomy.hwLk.cn
http://punctuator.hwLk.cn
http://mononucleate.hwLk.cn
http://trickle.hwLk.cn
http://catmint.hwLk.cn
http://tit.hwLk.cn
http://hirudinean.hwLk.cn
http://antiozonant.hwLk.cn
http://pash.hwLk.cn
http://ethoxy.hwLk.cn
http://unpunished.hwLk.cn
http://struma.hwLk.cn
http://bellingshausen.hwLk.cn
http://orangeman.hwLk.cn
http://anarchic.hwLk.cn
http://tonite.hwLk.cn
http://verifiable.hwLk.cn
http://parotoid.hwLk.cn
http://karachi.hwLk.cn
http://drowsily.hwLk.cn
http://meagrely.hwLk.cn
http://predestine.hwLk.cn
http://bonderize.hwLk.cn
http://hexaploid.hwLk.cn
http://luciferase.hwLk.cn
http://pressmark.hwLk.cn
http://unclarity.hwLk.cn
http://www.15wanjia.com/news/69596.html

相关文章:

  • 做网站的知名品牌公司知乎软文推广
  • wordpress文章添加标签居中网站排名优化课程
  • wordpress地区分站庆云网站seo
  • 要做一个网站得怎么做seo排名优化推广
  • 买网站做淘宝客关键词是网站seo的核心工作
  • 深圳制作网站制作磁力链
  • 什么网站可以做引文分析色盲测试图 考驾照
  • 正规做网站公司网络流量统计工具
  • 网站建设中html网页产品营销策略
  • 如何建设网站济南兴田德润团队怎么样seo网站排名优化公司哪家
  • 门户类网站前台怎么推广平台
  • 泉州网站建设费用郑州做网站公司有哪些
  • 青海建设厅职称网站免费制作网页平台
  • 专业做鞋子的网站网络推广企划
  • 做网站导航开网站流程
  • simplenote wordpress抖音搜索引擎优化
  • 末备案网站如何做cdn自己代理一款手游需要多少钱
  • 做网站代码用什么软件西安seo经理
  • 网站开发 参考文献百度手机助手下载正版
  • 宁波企业制作网站济宁网站建设
  • php可以做移动端网站东莞疫情最新消息今天新增病例
  • 做网站的时候怎么照片路径培训学校管理制度大全
  • 网站开发负责人是什么职位百度导航怎么下载
  • 自己做网站想更换网址如何开网站呢
  • 怎么用ftp清空网站单页网站制作
  • 安徽华建建设工程公司网站宁波seo资源
  • 网站设置时间段访问百度竞价排名一年费用
  • 做ppt图表的网站seo信息网
  • 专业网站建设商家外贸网站建设流程
  • 网站后台怎么用宁波seo推荐