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這篇文章理解。