001    package escjava.gui;
002    
003    public class TaskQueue {
004    
005        //@ non_null
006        private java.util.LinkedList tasks = new java.util.LinkedList();
007    
008        synchronized public void addTask(Object o) { 
009            tasks.addLast(o); 
010            notifyAll();
011        }
012    
013        synchronized public Object getTask() { 
014            while (tasks.isEmpty()) {
015                try { wait(); } catch (Exception e) {}
016            }
017            return tasks.removeFirst(); 
018        }
019    
020        synchronized public void clear() {
021            tasks.clear();
022        }
023    }