En este ejemplo, una tarea genera números de la serie de Fibonacci y se los pasa a otra para que los imprima.
class Fibonacci |
public class Fibonacci { public static void main(String[] args) { BlockingQueue<Integer> cola= new
LinkedBlockingDeque<Integer>(); ProduceFibo productor= new ProduceFibo(cola);
ConsumeFibo consumidor= new ConsumeFibo(cola);
productor.start();
consumidor.start(); } } |
class ProduceFibo |
public class ProduceFibo
extends Thread { private int f1= 1; private int f2= 1; private final
BlockingQueue<Integer> cola; public
ProduceFibo(BlockingQueue<Integer> cola) { this.cola = cola; } @Override public void run() { try { while (true) { int fn= f1+f2; cola.put(fn); f1= f2; f2= fn; sleep(1000); } } catch (InterruptedException e) { // se acaba; } } } |
class ConsumeFibo |
public class ConsumeFibo extends Thread { private final
BlockingQueue<Integer> cola; public
ConsumeFibo(BlockingQueue<Integer> cola) { this.cola = cola; } @Override public void run() { try { while (true) { int n = cola.take(); System.out.println(n); } } catch (InterruptedException e) { // se acaba; } } } |
Temas relacionados