成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

ConcurrentLinkedQueue使用實(shí)例

Java3y / 2023人閱讀

摘要:序是一個(gè)基于鏈接節(jié)點(diǎn)的無界線程安全隊(duì)列,它采用先進(jìn)先出的規(guī)則對(duì)節(jié)點(diǎn)進(jìn)行排序,當(dāng)我們添加一個(gè)元素的時(shí)候,它會(huì)添加到隊(duì)列的尾部,當(dāng)我們獲取一個(gè)元素時(shí),它會(huì)返回隊(duì)列頭部的元素。的模型,默認(rèn)的是用這個(gè)來實(shí)現(xiàn)的。

ConcurrentLinkedQueue是一個(gè)基于鏈接節(jié)點(diǎn)的無界線程安全隊(duì)列,它采用先進(jìn)先出的規(guī)則對(duì)節(jié)點(diǎn)進(jìn)行排序,當(dāng)我們添加一個(gè)元素的時(shí)候,它會(huì)添加到隊(duì)列的尾部,當(dāng)我們獲取一個(gè)元素時(shí),它會(huì)返回隊(duì)列頭部的元素。

對(duì)比
queue 阻塞與否 是否有界 線程安全保障 適用場(chǎng)景 注意事項(xiàng)
ArrayBlockingQueue 阻塞 有界 一把全局鎖 生產(chǎn)消費(fèi)模型,平衡兩邊處理速度 --
LinkedBlockingQueue 阻塞 可配置 存取采用2把鎖 生產(chǎn)消費(fèi)模型,平衡兩邊處理速度 無界的時(shí)候注意內(nèi)存溢出問題
ConcurrentLinkedQueue 非阻塞 無界 CAS 對(duì)全局的集合進(jìn)行操作的場(chǎng)景 size() 是要遍歷一遍集合,慎用
實(shí)例

由于ConcurrentLinkedQueue是無界的,所以使用的時(shí)候要特別注意內(nèi)存溢出問題。akka的actor模型,默認(rèn)的mailbox是用這個(gè)來實(shí)現(xiàn)的。

object UnboundedMailbox {
  class MessageQueue extends ConcurrentLinkedQueue[Envelope] with UnboundedQueueBasedMessageQueue {
    final def queue: Queue[Envelope] = this
  }
}

MyUnboundedMailbox

public class MyUnboundedMailbox implements MailboxType,
  ProducesMessageQueue {

  // This is the MessageQueue implementation
  public static class MyMessageQueue implements MessageQueue,
      MyUnboundedMessageQueueSemantics {
    private final Queue queue =
      new ConcurrentLinkedQueue();

    // these must be implemented; queue used as example
    public void enqueue(ActorRef receiver, Envelope handle) {
      queue.offer(handle);
    }
    public Envelope dequeue() { return queue.poll(); }
    public int numberOfMessages() { return queue.size(); }
    public boolean hasMessages() { return !queue.isEmpty(); }
    public void cleanUp(ActorRef owner, MessageQueue deadLetters) {
      for (Envelope handle: queue) {
        deadLetters.enqueue(owner, handle);
      }
    }
  }

  // This constructor signature must exist, it will be called by Akka
  public MyUnboundedMailbox(ActorSystem.Settings settings, Config config) {
    // put your initialization code here
  }

  // The create method is called to create the MessageQueue
  public MessageQueue create(Option owner, Option system) {
    return new MyMessageQueue();
  }
}
doc

Actors and Green Threads in Java Demystified

Mailboxes

Mailbox.scala

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/76302.html

相關(guān)文章

  • ConcurrentLinkedQueue使用實(shí)例

    摘要:序是一個(gè)基于鏈接節(jié)點(diǎn)的無界線程安全隊(duì)列,它采用先進(jìn)先出的規(guī)則對(duì)節(jié)點(diǎn)進(jìn)行排序,當(dāng)我們添加一個(gè)元素的時(shí)候,它會(huì)添加到隊(duì)列的尾部,當(dāng)我們獲取一個(gè)元素時(shí),它會(huì)返回隊(duì)列頭部的元素。的模型,默認(rèn)的是用這個(gè)來實(shí)現(xiàn)的。 序 ConcurrentLinkedQueue是一個(gè)基于鏈接節(jié)點(diǎn)的無界線程安全隊(duì)列,它采用先進(jìn)先出的規(guī)則對(duì)節(jié)點(diǎn)進(jìn)行排序,當(dāng)我們添加一個(gè)元素的時(shí)候,它會(huì)添加到隊(duì)列的尾部,當(dāng)我們獲取一個(gè)元...

    Raaabbit 評(píng)論0 收藏0
  • Java多線程進(jìn)階(二九)—— J.U.C之collections框架:ConcurrentLink

    摘要:所以,在并發(fā)量適中的情況下,一般具有較好的性能。字段指向隊(duì)列頭,指向隊(duì)列尾,通過來操作字段值以及對(duì)象的字段值。單線程的情況下,元素入隊(duì)比較好理解,直接線性地在隊(duì)首插入元素即可。 showImg(https://segmentfault.com/img/bVbguGd?w=1200&h=800); 本文首發(fā)于一世流云專欄:https://segmentfault.com/blog... ...

    Cobub 評(píng)論0 收藏0
  • 非阻塞同步算法實(shí)戰(zhàn)(一):ConcurrentLinkedQueue

    摘要:注意這里指的不是當(dāng)次而是之后,所以如果我們使用隊(duì)列的方法返回,就知道隊(duì)列是否為空,但是不知道之后是否為空,并且,當(dāng)關(guān)注的操作發(fā)生時(shí),在插入或取出操作的返回值里告知此信息,來指導(dǎo)是否繼續(xù)注冊(cè)寫操作。 前言 本文寫給對(duì)ConcurrentLinkedQueue的實(shí)現(xiàn)和非阻塞同步算法的實(shí)現(xiàn)原理有一定了解,但缺少實(shí)踐經(jīng)驗(yàn)的朋友,文中包括了實(shí)戰(zhàn)中的嘗試、所走的彎路,經(jīng)驗(yàn)和教訓(xùn)。 背景介紹 ...

    EscapedDog 評(píng)論0 收藏0
  • 通俗易懂,JDK 并發(fā)容器總結(jié)

    摘要:線程安全的線程安全的,在讀多寫少的場(chǎng)合性能非常好,遠(yuǎn)遠(yuǎn)好于高效的并發(fā)隊(duì)列,使用鏈表實(shí)現(xiàn)。這樣帶來的好處是在高并發(fā)的情況下,你會(huì)需要一個(gè)全局鎖來保證整個(gè)平衡樹的線程安全。 該文已加入開源項(xiàng)目:JavaGuide(一份涵蓋大部分Java程序員所需要掌握的核心知識(shí)的文檔類項(xiàng)目,Star 數(shù)接近 14 k)。地址:https://github.com/Snailclimb... 一 JDK ...

    curlyCheng 評(píng)論0 收藏0
  • 【實(shí)戰(zhàn)Java高并發(fā)程序設(shè)計(jì)】連載1–Java中的指針:Unsafe類

    摘要:不難看出,方法的內(nèi)部,必然是使用原子指令來完成的。它是一個(gè)內(nèi)部使用的專屬類。注意根據(jù)類加載器的工作原理,應(yīng)用程序的類由加載。加載器沒有對(duì)象的對(duì)象,因此試圖獲得這個(gè)類加載器會(huì)返回。 如果你對(duì)技術(shù)有著不折不撓的追求,應(yīng)該還會(huì)特別在意incrementAndGet() 方法中compareAndSet()的實(shí)現(xiàn)?,F(xiàn)在,就讓我們更進(jìn)一步看一下它把!public final boolean co...

    EasonTyler 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<