thufir

producer/consumer

Jul 13th, 2014
232
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.54 KB | None | 0 0
  1. package net.bounceme.dur.server.streams;
  2.  
  3. import java.io.IOException;
  4. import net.bounceme.dur.jdbc.Title;
  5. import java.io.ObjectInputStream;
  6. import java.io.ObjectOutputStream;
  7. import java.net.Socket;
  8. import java.util.logging.Logger;
  9.  
  10. public class WorkerRunnable implements Runnable {
  11.  
  12.     private static final Logger log = Logger.getLogger(WorkerRunnable.class.getName());
  13.     protected Socket socket = null;
  14.     private Producer producer = null;
  15.     private Consumer consumer = null;
  16.  
  17.     public WorkerRunnable(Socket clientSocket, RecordsQueueWrapper recordsQueue) {
  18.         this.socket = clientSocket;
  19.     }
  20.  
  21.     @Override
  22.     public void run() {
  23.         Title title = null;
  24.         boolean titleIsConsumed = false;
  25.         try (ObjectOutputStream objectOutputStream = new ObjectOutputStream(socket.getOutputStream());
  26.                 ObjectInputStream objectInputStream = new ObjectInputStream(socket.getInputStream())) {
  27.             producer = new Producer();  //gets from a queue
  28.             consumer = new Consumer(objectInputStream);
  29.             while (true) {
  30.                 title = producer.produce();
  31.                 objectOutputStream.writeObject(title);
  32.                 do {
  33.                     consumer.consume(title);
  34.                     titleIsConsumed = true;
  35.                 } while (!titleIsConsumed);
  36.                 titleIsConsumed = false;  //produce the next Title
  37.             }
  38.         } catch (IOException ioe) {
  39.             log.severe(ioe.toString());
  40.             throw new RuntimeException();
  41.         }
  42.     }
  43. }
Advertisement
Add Comment
Please, Sign In to add comment