BlockingQueue作为线程容器,可以为线程同步提供有力的保障,其主要用到的方法包括:[java]view plaincopyadd(Eo);//将指定的元素添加到此队列中(如果立即可行),在成功时返回true,其他情况则抛出IllegalStateException。drainTo(Col....
分类:
编程语言 时间:
2014-09-16 12:34:10
阅读次数:
230
今天被问了一个bq,当时状态不好,只知道思路肯定是生产者消费者。后来冷静想想就写出来了。#include #include #include #include using namespace std;class BlockingQueue{public: BlockingQueue(const in...
分类:
其他好文 时间:
2014-09-14 12:45:07
阅读次数:
189
在Java多线程应用中,队列的使用率很高,多数生产消费模型的首选数据结构就是队列。Java提供的线程安全的Queue可以分为阻塞队列和非阻塞队列,其中阻塞队列的典型例子是BlockingQueue,非阻塞队列的典型例子是Con...
分类:
编程语言 时间:
2014-09-05 01:06:20
阅读次数:
431
在研究Smack的源代码的时候,我对它的连接Connection以及派生类XMPPConnection的关注是最多的,因为一个即时通信程序,它的网络模块必是它的核心。而我很在乎它是如何实现的。
在收发数据包的时候,我看到了队列的身影。BlockingQueue和ArrayBlockingQueue。所以,我觉得用到什么然后去查阅,去记录,这种方法是比较高效率的。
BlockingQueue是在...
分类:
移动开发 时间:
2014-09-03 16:57:37
阅读次数:
237
SynchronousQueue是一种很特别的BlockingQueue,任何一个添加元素的操作都必须等到另外一个线程拿走元素才会结束。也就是SynchronousQueue本身不会存储任何元素,相当于生产者和消费者手递手直接交易。SynchronousQueue有一个fair选项,如果fair为t...
分类:
编程语言 时间:
2014-08-25 16:39:44
阅读次数:
278
public ThreadPoolExecutor( int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue workQueue)corePoolSize 指的是保留的线...
分类:
编程语言 时间:
2014-08-21 11:10:43
阅读次数:
243
基于队列的线程池importjava.text.SimpleDateFormat;
importjava.util.Date;
importjava.util.concurrent.ArrayBlockingQueue;
importjava.util.concurrent.BlockingQueue;
importjava.util.concurrent.ThreadPoolExecutor;
importjava.util.concurrent.TimeUnit;
/**
*Create..
分类:
编程语言 时间:
2014-08-20 10:37:27
阅读次数:
378
阅读ArrayBlockingQueue源码,很容易知道有界阻塞队列的长度至少为1,也就是至少能缓存下一个数据。SynchronousQueue的javadoc文档提到A synchronous queue does not have any internal capacity, not even a capacity of one.也就说同步队列的容量是0,不会缓存数据。
长度为1的阻塞队列和...
分类:
其他好文 时间:
2014-08-19 20:56:35
阅读次数:
298
一、概述:
BlockingQueue作为线程容器,可以为线程同步提供有力的保障。
二、BlockingQueue定义的常用方法
1.BlockingQueue定义的常用方法如下:
抛出异常
特殊值
阻塞
超时
插入
add(e)
offer(e)
put(e)
offer(e, time, unit)
移...
分类:
其他好文 时间:
2014-08-13 13:10:56
阅读次数:
388
对于BlockingQueue的具体实现,主要关注的有两点:线程安全的实现和阻塞操作的实现。所以分析ArrayBlockingQueue也是基于这两点。对于线程安全来说,所有的添加元素的方法和拿走元素的方法都会涉及到,我们通过分析offer方法和poll()方法就能看出线程安全是如何实现的。首先来看...
分类:
编程语言 时间:
2014-08-10 21:05:50
阅读次数:
247