java线程系列---BlockingQueue队列的用法
2012-07-20 17:52
417 查看
在一队列中,通过存放数据,然后取数据,无数据时,等待取数据,队列数据满了时,等待放数据
public class BlockingQueueTest {
public static void main(String[] args) {
final BlockingQueue queue = new ArrayBlockingQueue(3);
for(int i=0;i<2;i++){
new Thread(){
public void run(){
while(true){
try {
Thread.sleep((long)(Math.random()*1000));
System.out.println(Thread.currentThread().getName() + "准备放数据!");
queue.put(1);
System.out.println(Thread.currentThread().getName() + "已经放了数据," +
"队列目前有" + queue.size() + "个数据");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}.start();
}
new Thread(){
public void run(){
while(true){
try {
//将此处的睡眠时间分别改为100和1000,观察运行结果
Thread.sleep(1000);
System.out.println(Thread.currentThread().getName() + "准备取数据!");
queue.take();
System.out.println(Thread.currentThread().getName() + "已经取走数据," +
"队列目前有" + queue.size() + "个数据");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}.start();
}
}
public class BlockingQueueTest {
public static void main(String[] args) {
final BlockingQueue queue = new ArrayBlockingQueue(3);
for(int i=0;i<2;i++){
new Thread(){
public void run(){
while(true){
try {
Thread.sleep((long)(Math.random()*1000));
System.out.println(Thread.currentThread().getName() + "准备放数据!");
queue.put(1);
System.out.println(Thread.currentThread().getName() + "已经放了数据," +
"队列目前有" + queue.size() + "个数据");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}.start();
}
new Thread(){
public void run(){
while(true){
try {
//将此处的睡眠时间分别改为100和1000,观察运行结果
Thread.sleep(1000);
System.out.println(Thread.currentThread().getName() + "准备取数据!");
queue.take();
System.out.println(Thread.currentThread().getName() + "已经取走数据," +
"队列目前有" + queue.size() + "个数据");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}.start();
}
}
相关文章推荐
- java 4000 中线程队列BlockingQueue的用法
- Java线程(篇外篇):阻塞队列BlockingQueue
- Java线程(篇外篇):阻塞队列BlockingQueue
- java中线程队列BlockingQueue的用法
- Java线程(篇外篇):阻塞队列BlockingQueue
- java中线程队列BlockingQueue的用法
- Java线程(篇外篇):阻塞队列BlockingQueue
- java中线程队列BlockingQueue的用法
- java中线程队列BlockingQueue的用法
- 阻塞队列BlockingQueue用法(转)
- java中阻塞队列BlockingQueue的用法
- java中线程队列BlockingQueue的用法
- java中线程队列BlockingQueue的用法
- java中线程队列BlockingQueue的用法
- Java线程(十三)----阻塞队列BlockingQueue
- java中线程队列BlockingQueue的用法
- java中线程队列BlockingQueue的用法
- java中线程队列BlockingQueue的用法
- 并发队列ConcurrentLinkedQueue和阻塞栈LinkedBlockingQueue用法和阻塞队列ArrayBlockingQueue
- java线程系列---队列ArrayBlockingQueue