阻塞队列

 1 package unit;
 2 
 3 import java.util.concurrent.ArrayBlockingQueue;
 4 
 5 /**
 6  * 阻塞队列
 7  * @author 54304
 8  *
 9  */
10 public class BlockingQueue {
11     private int queueSize = 10;
12     private ArrayBlockingQueue<Integer> queue = new ArrayBlockingQueue<Integer>(queueSize);
13     int m = 0;
14     int n = 0;
15     int k = 0;
16     public static void main(String[] args) throws InterruptedException  {
17         BlockingQueue test = new BlockingQueue();
18         Producer producer = test.new Producer();
19         Consumer consumer = test.new Consumer();
20         
21         producer.start();
22         consumer.start();
23     }
24      
25     class Consumer extends Thread{
26          
27         @Override
28         public void run() {
29             consume();
30         }
31          
32         private void consume() {
33             while(true){
34                 try {
35                     queue.take();
36                     Thread.sleep(1000);
37                     System.out.println("队列有: "+queue.size()+" 个 元素"+"  编号"+ ++m + " 减少"+ "   减少次数:"+ ++n);
38                 } catch (InterruptedException e) {
39                     e.printStackTrace();
40                 }
41             }
42         }
43     }
44      
45     class Producer extends Thread{
46          
47         @Override
48         public void run() {
49             produce();
50         }
51          
52         private void produce() {
53             for(int i=0; i<10; i++){
54                 try {
55                     queue.put(1);
56                     Thread.sleep(1000);
57                     System.out.println("队列有: "+queue.size()+" 个 元素"+"  编号"+ ++m + " 添加"+ "   添加次数:"+ ++k);
58                 } catch (InterruptedException e) {
59                     e.printStackTrace();
60                 }
61             }
62         }
63     }
64 }

 

posted @ 2017-12-13 17:50  林**  阅读(203)  评论(0编辑  收藏  举报