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

java SynchronousQueue 似乎有的一个bug

    博客分类:
  • j2se
阅读更多
blockingQueue.put(E e); 会导致 e 变得不稳定。

代码如下:
                    logger.debug("put a q size :{}",pq.size());
returnSize=returnSize+pq.size();

frontier.getTodoQueue().put(pq);

pq.size is ok.

如果变为
             frontier.getTodoQueue().put(pq);
          logger.debug("put a q size :{}",pq.size());
  returnSize=returnSize+pq.size();

则 pg 以及 pq.size 变得不稳定.


我怀疑是java SynchronousQueue 的一个bug.

当然,也许是我对 SynchronousQueue 的理解,不到位。


分享到:
评论
1 楼 stephen80 2009-03-02  
是的。我的代码有问题。
引出程序设计的原则:
1.不要尽可能的利用已有对象,不要担心对象创建
2. 为了thread safe:
  考虑 :
    Caller copies
    Receiver copies:



相关推荐

    java 同步器SynchronousQueue详解及实例

    主要介绍了java 同步器SynchronousQueue详解及实例的相关资料,需要的朋友可以参考下

    SynchronousQueue实现原理.pdf

    转载的一篇博客资源

    java并发工具包 java.util.concurrent中文版用户指南pdf

    7. 同步队列 SynchronousQueue 8. 阻塞双端队列 BlockingDeque 9. 链阻塞双端队列 LinkedBlockingDeque 10. 并发 Map(映射) ConcurrentMap 11. 并发导航映射 ConcurrentNavigableMap 12. 闭锁 CountDownLatch 13. ...

    SynchronousQueue详解

    文章目录简介举例说明总结 SynchronousQueue详解 简介 SynchronousQueue是BlockingQueue的一种,所以...而每一个remove操作也必须等待其他线程的insert操作。 这种特性可以让我们想起了Exchanger。和Exchanger

    Java并发工具包java.util.concurrent用户指南中英文对照阅读版.pdf

    同步队列 SynchronousQueue 8. 阻塞双端队列 BlockingDeque 9. 链阻塞双端队列 LinkedBlockingDeque 10. 并发 Map(映射) ConcurrentMap 11. 并发导航 映射 ConcurrentNavigableMap 12. 闭锁 CountDownLatch 13. ...

    SynchronousQueue核心属性和方法源码的分析

    SynchronousQueue核心属性和方法源码的分析的代码

    Java并发工具包java.util.concurrent用户指南中英文对照阅读版

    本资源包含两个 pdf 文档,一本根据 Jakob Jenkov 最新博客 (http://tutorials.jenkov.com/java-util-concurrent/index.html) 整理的 java_util_concurrent_user_guide_en.pdf,一个中文翻译的 java_util_concurrent...

    java并发包资源

    本资源包含两个 pdf 文档,一本根据 Jakob Jenkov 最新博客 (http://tutorials.jenkov.com/java-util-concurrent/index.html) 整理的 java_util_concurrent_user_guide_en.pdf,一个中文翻译的 java_util_concurrent...

    一个小的java Demo , 非常适合Java初学者学习阅读.rar

    同步队列 SynchronousQueue,阻塞双端队列 BlockingDeque, 链阻塞双端队列 LinkedBlockingDeque,并发 Map(映射) ConcurrentMap, 并发导航映射 ConcurrentNavigableMap,交换机 Exchanger, 信号量 Semaphore,执行器...

    java核心知识点整理.pdf

    25 JAVA8 与元数据.................................................................................................................................25 2.4. 垃圾回收与算法 .................................

    java线程池概念.txt

     假如有一个工厂,工厂里面有10个工人,每个工人同时只能做一件任务。  因此只要当10个工人中有工人是空闲的,来了任务就分配给空闲的工人做;  当10个工人都有任务在做时,如果还来了任务,就把任务进行排队...

    JAVA高并发_学习笔记

    JAVA学习高并发的学习笔记。同步非阻塞式IO:Buffere Channel Selector Concurrent包:Blocking:Queue\Concurrent Hash Map \ExcutorService\lock\原子性 BlockingQueue:ArrayBlockingQueue , DelayQueue , ...

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

    25 JAVA8 与元数据.................................................................................................................................25 2.4. 垃圾回收与算法 .................................

    第7章-JUC多线程v1.1.pdf

    以SynchronousQueue作为等待队列, 从而每次往队列中插入一个元素, 必须等待另一个线程从这个队列删除一个元素. 定时调度 4.定时调度的线程池 ExecutorService newCachedThreadPool = Executors....

    常见的Java笔试题-JVM-JUC-Core:JUCJVM核心知识点

    常见的Java笔试题 JUC、JMM核心知识点笔记 尚硅谷周阳老师课程——笔记。 / / JUC知识点 JMM volatile关键字 可见性 原子性 有序性 哪些地方用到过volatile? 单例模式的安全问题 CAS CAS底层原理 CAS缺点 ABA问题 ...

    2004_DISC_dual_DS.pdf

    SynchronousQueue 底层算法相关实现论文

    汪文君高并发编程实战视频资源全集

    │ 高并发编程第二阶段14讲、单线程执行设计模式,有一个门,始终只能一个人通过-上.mp4 │ 高并发编程第二阶段15讲、单线程执行设计模式,有一个门,始终只能一个人通过-下.mp4 │ 高并发编程第二阶段16讲、多...

    汪文君高并发编程实战视频资源下载.txt

    │ 高并发编程第二阶段14讲、单线程执行设计模式,有一个门,始终只能一个人通过-上.mp4 │ 高并发编程第二阶段15讲、单线程执行设计模式,有一个门,始终只能一个人通过-下.mp4 │ 高并发编程第二阶段16讲、多...

Global site tag (gtag.js) - Google Analytics