1. public class ArrayBlockingQueueDemo {
    2. public static void main(String[] args) {
    3. ArrayBlockingQueue<String> queue = new ArrayBlockingQueue<String>(3);
    4. Interviewer r1 = new Interviewer(queue);
    5. Consumer r2 = new Consumer(queue);
    6. new Thread(r1).start();
    7. new Thread(r2).start();
    8. }
    9. }
    10. class Interviewer implements Runnable {
    11. BlockingQueue<String> queue;
    12. public Interviewer(BlockingQueue queue) {
    13. this.queue = queue;
    14. }
    15. @Override
    16. public void run() {
    17. System.out.println("10个候选人都来啦");
    18. for (int i = 0; i < 10; i++) {
    19. String candidate = "Candidate" + i;
    20. try {
    21. queue.put(candidate);
    22. System.out.println("安排好了" + candidate);
    23. } catch (InterruptedException e) {
    24. e.printStackTrace();
    25. }
    26. }
    27. try {
    28. queue.put("stop");
    29. } catch (InterruptedException e) {
    30. e.printStackTrace();
    31. }
    32. }
    33. }
    34. class Consumer implements Runnable {
    35. BlockingQueue<String> queue;
    36. public Consumer(BlockingQueue queue) {
    37. this.queue = queue;
    38. }
    39. @Override
    40. public void run() {
    41. try {
    42. Thread.sleep(1000);
    43. } catch (InterruptedException e) {
    44. e.printStackTrace();
    45. }
    46. String msg;
    47. try {
    48. while(!(msg = queue.take()).equals("stop")){
    49. System.out.println(msg + "到了");
    50. }
    51. System.out.println("所有候选人都结束了");
    52. } catch (InterruptedException e) {
    53. e.printStackTrace();
    54. }
    55. }
    56. }