package org.buzztroll.mud;
import java.util.LinkedList;
public abstract class Queue implements Runnable {
protected LinkedList list;
public Queue() {
list = new LinkedList();
}
public synchronized void queue(Object obj) {
list.add(obj);
notify();
}
public synchronized Object dequeue()
throws InterruptedException {
if (list.isEmpty()) {
wait();
}
return list.removeFirst();
}
public void start() {
Thread t = new Thread(this);
t.setDaemon(true);
t.start();
}
public void run() {
Object tmp;
try {
while(true) {
tmp = dequeue();
if (tmp == null) {
return;
}
execute(tmp);
}
} catch (InterruptedException e) {
}
}
public abstract void execute(Object obj);
}