国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

ConcurrentLinkedQueue使用實例

Raaabbit / 2079人閱讀

摘要:序是一個基于鏈接節點的無界線程安全隊列,它采用先進先出的規則對節點進行排序,當我們添加一個元素的時候,它會添加到隊列的尾部,當我們獲取一個元素時,它會返回隊列頭部的元素。的模型,默認的是用這個來實現的。

ConcurrentLinkedQueue是一個基于鏈接節點的無界線程安全隊列,它采用先進先出的規則對節點進行排序,當我們添加一個元素的時候,它會添加到隊列的尾部,當我們獲取一個元素時,它會返回隊列頭部的元素。

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

由于ConcurrentLinkedQueue是無界的,所以使用的時候要特別注意內存溢出問題。akka的actor模型,默認的mailbox是用這個來實現的。

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

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/70387.html

相關文章

  • ConcurrentLinkedQueue使用實例

    摘要:序是一個基于鏈接節點的無界線程安全隊列,它采用先進先出的規則對節點進行排序,當我們添加一個元素的時候,它會添加到隊列的尾部,當我們獲取一個元素時,它會返回隊列頭部的元素。的模型,默認的是用這個來實現的。 序 ConcurrentLinkedQueue是一個基于鏈接節點的無界線程安全隊列,它采用先進先出的規則對節點進行排序,當我們添加一個元素的時候,它會添加到隊列的尾部,當我們獲取一個元...

    Java3y 評論0 收藏0
  • Java多線程進階(二九)—— J.U.C之collections框架:ConcurrentLink

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

    Cobub 評論0 收藏0
  • 非阻塞同步算法實戰(一):ConcurrentLinkedQueue

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

    EscapedDog 評論0 收藏0
  • 通俗易懂,JDK 并發容器總結

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

    curlyCheng 評論0 收藏0
  • 【實戰Java高并發程序設計】連載1–Java中的指針:Unsafe類

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

    EasonTyler 評論0 收藏0

發表評論

0條評論

Raaabbit

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<