Mega Code Archive

 
Categories / Java by API / Java Util Concurrent
 

BlockingQueue

import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.BlockingQueue; public class Main {   public static void main(String[] argv) throws Exception {     int capacity = 10;     BlockingQueue<Integer> queue = new ArrayBlockingQueue<Integer>(capacity);     int numWorkers = 2;     Worker[] workers = new Worker[numWorkers];     for (int i = 0; i < workers.length; i++) {       workers[i] = new Worker(queue);       workers[i].start();     }     for (int i = 0; i < 100; i++) {       queue.put(i);     }   } } class Worker extends Thread {   BlockingQueue<Integer> q;   Worker(BlockingQueue<Integer> q) {     this.q = q;   }   public void run() {     try {       while (true) {         Integer x = q.take();         if (x == null) {           break;         }         System.out.println(x);       }     } catch (InterruptedException e) {     }   } }