`
ocre
  • 浏览: 56915 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

非阻塞队列插入算法

    博客分类:
  • java
阅读更多

   摘自: http://www.ibm.com/developerworks/cn/java/j-jtp04186/

 

public class LinkedQueue <E> {
    private static class Node <E> {
        final E item;
        final AtomicReference<Node<E>> next;
        Node(E item, Node<E> next) {
            this.item = item;
            this.next = new AtomicReference<Node<E>>(next);
        }
    }
    private AtomicReference<Node<E>> head
        = new AtomicReference<Node<E>>(new Node<E>(null, null));
    private AtomicReference<Node<E>> tail = head;
    public boolean put(E item) {
        Node<E> newNode = new Node<E>(item, null);
        while (true) {
            Node<E> curTail = tail.get();
            Node<E> residue = curTail.next.get();
            if (curTail == tail.get()) {
                if (residue == null) /* A */ {
                    if (curTail.next.compareAndSet(null, newNode)) /* C */ {
                        tail.compareAndSet(curTail, newNode) /* D */ ;
                        return true;
                    }
                } else {
                    tail.compareAndSet(curTail, residue) /* B */;
                }
            }
        }
    }
}
 

 

分享到:
评论

相关推荐

    进程调度的设计与分析实验报告

    综合应用下列知识点设计并实现操作系统的进程调度:邻接表,布尔数组,非阻塞输入,图形用户界面GUI,进程控制块,进程状态转换,多级反馈队列进程调度算法。 2、 加深理解操作系统进程调度的过程。 3、 加深理解...

    进程调度设计与实现

    1、 综合应用下列知识点设计并实现操作系统的进程调度:邻接表,布尔数组,非阻塞输入,图形用户界面GUI,进程控制块,进程状态转换,多级反馈队列进程调度算法。 2、 加深理解操作系统进程调度的过程。 3、 加深...

    进程调度的设计与实现

    组,非阻塞输入,图形用户界面GUI,进程控制块,进程状态转换,多级反馈队列进程调度算法。 2加深理解操作系统进程调度的过程。 3加深理解多级反馈队列进程调度算法。 三、实验主要硬件软件环境 64位PC机, VS2010 ...

    leetcode中国-interview-Python:SWE面试准备的一些收藏

    阻塞队列(等待一段时间)或非阻塞队列 单链表 循环链表 双向链表 树(一到 n) 二叉树 :预购(NLR); 有序(LNR); 后订单 (RNL) 段树 自平衡二叉搜索树 红黑树 展开树 AVL树 (多路树) B/B+/2-3/2-3-4 树 特里树...

    【白雪红叶】JAVA学习技术栈梳理思维导图.xmind

    同步非阻塞 基于信号 多路复用 异步IO 类加载机制 双亲委派 OSGI 算法 搜索 二分 排序 选择 冒泡 插入 快速 归并 堆 桶 基数 常用算法 贪婪 回溯 剪枝 动态规划 数据挖掘算法 KMP算法 ...

    宋劲彬的嵌入式C语言一站式编程

    2. 插入排序 3. 算法的时间复杂度分析 4. 归并排序 5. 线性查找 6. 折半查找 12. 栈与队列 1. 数据结构的概念 2. 堆栈 3. 深度优先搜索 4. 队列与广度优先搜索 5. 环形队列 13. 本阶段总结 II. C语言本质 14. 计算机...

    java核心知识点整理.pdf

    垃圾回收与算法 .................................................................................................................................. 26 2.4.2. 2.4.3. 2.4.4. 2.4.5. 2.4.5.1. 2.4.5.2. ...

    JAVA核心知识点整理(有效)

    标记整理算法(Mark-Compact).................................................................................................. 28 分代收集算法 ..............................................................

    CISCO路由之排除路由故障

    在非帧中继的环境中,可能需要增加输入或输出保留队列。  7.大型路由选择表  接口上使用ip summary-address汇总路由。 三 排除EIGRP故障  1.不匹配的K值  EIGRP为了建立它的邻居关系,计算EIGRP度量标准的K...

Global site tag (gtag.js) - Google Analytics