V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
echooo0
V2EX  ›  程序员

Java 中循环队列的问题

  •  
  •   echooo0 · 2022-10-11 22:50:57 +08:00 · 1698 次点击
    这是一个创建于 804 天前的主题,其中的信息可能已经有所发展或是发生改变。

    需求大概是这样

    依照队列先进先出的原则,顺序获取,先出来的元素放进队尾,构成了一个循环。 然后最好是线程安全的(或者单独额外加锁也行)

    不知道 java 里面有没有这样现成的数据结构设计

    11 条回复    2022-10-12 18:38:32 +08:00
    PendingOni
        1
    PendingOni  
       2022-10-12 08:06:23 +08:00
    ghost024
        2
    ghost024  
       2022-10-12 08:39:06 +08:00
    arrayDeque 但是这个是非线程安全的
    tramm
        3
    tramm  
       2022-10-12 08:55:14 +08:00
    Disruptor 中的 RingBuffer?
    arvinsilm
        4
    arvinsilm  
       2022-10-12 09:27:39 +08:00
    把 Queue 的 add()方法重写一下?
    anakinsky
        5
    anakinsky  
       2022-10-12 09:46:23 +08:00
    ArrayBlockingQueue
    YepTen
        6
    YepTen  
       2022-10-12 09:47:52 +08:00
    整 2 个队列不就行了,一个未读的,一个读过的,读完后,两个队列互换下。
    YepTen
        7
    YepTen  
       2022-10-12 09:49:41 +08:00
    或者玩双指针,一个队列就行了
    urnoob
        8
    urnoob  
       2022-10-12 10:27:04 +08:00
    出队+入队 是原子操作的没有。但是实现也简单
    Jooooooooo
        9
    Jooooooooo  
       2022-10-12 10:27:15 +08:00   ❤️ 1
    这不得反思一下自己的搜索能力

    java concurrent queue 直接搜就有答案.
    Kamiyu0087
        10
    Kamiyu0087  
       2022-10-12 11:45:41 +08:00
    LinkedBlockingQueue
    blessingsi
        11
    blessingsi  
       2022-10-12 18:38:32 +08:00
    一个数组,双指针,也就是楼上说的 ringbuffer 。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1000 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 21:02 · PVG 05:02 · LAX 13:02 · JFK 16:02
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.