BlockingQueue

import java.util.Scanner;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class testBlockingQueue {

    public static void main(String[] args) {
        final BlockingQueue<Integer> bq = new ArrayBlockingQueue<Integer>(5);
        
        ExecutorService es = Executors.newFixedThreadPool(2);
        
        es.execute(new Runnable() {
            @Override
            public void run() {
                for(int i=0;i<10;i++){
                    try {
                        Thread.sleep(5000);
                        bq.put(i);
                        System.out.println(i +" is in...");
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        });
        
        es.execute(new Runnable() {
            @Override
            public void run() {
                Scanner sc = new Scanner(System.in);
                System.out.println("input 1.....");
                while(sc.next().equals("1")){
                    System.out.println(bq.poll() + " is out.");
                }
            }
        });
        
        es.shutdown();
    }
    
}

java已經幫我做了很多事情了,不斷的重複造輪子還是因爲對java知道的太少了。


BlockingQueue的組織引用一張圖:

具體的一些介紹參照http://wsmajunfeng.iteye.com/blog/1629354這篇文章理解。


發佈了42 篇原創文章 · 獲贊 3 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章