论坛首页 Java企业应用论坛

java SynchronousQueue 似乎有的一个bug

浏览 2501 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-03-02  
OO
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 的理解,不到位。


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



0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics