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