Consumer.java
package ch.hslu.exercises.sw06.ex4;
import org.slf4j.LoggerFactory;
import org.slf4j.Logger;
/**
* Konsument, der soviele Werte aus einer Queue liest, wie er nur kann.
*/
public final class Consumer implements Runnable {
private static final Logger LOG = LoggerFactory.getLogger(Consumer.class);
private final BoundedBuffer<Integer> queue;
private long sum;
/**
* Erzeugt einen Konsumenten, der soviel Integer-Werte ausliest, wie er nur kann.
*
* @param queue Queue zum Lesen der Integer-Werte.
*/
public Consumer(final BoundedBuffer<Integer> queue) {
this.queue = queue;
this.sum = 0;
}
@Override
public void run() {
while (true) {
try {
Integer temp = queue.remove(10);
if (temp == null) {
LOG.info("Consumer get timeout");
break;
}
sum += temp;
} catch (InterruptedException ex) {
return;
}
}
}
/**
* Liefert die Summe aller ausgelesener Werte.
*
* @return Summe.
*/
public long getSum() {
return sum;
}
}