001 package escjava.gui; 002 003 import java.util.LinkedList; 004 005 public class WindowTasks implements Runnable { 006 007 public void run() { 008 009 while (true) { 010 Object o = getTask(); 011 if (o == null) { Thread.currentThread().yield(); continue; } 012 // Do something with task 013 014 } 015 016 } 017 018 static private /*@non_null*/ LinkedList tasks = new LinkedList(); 019 020 synchronized static public void addTask(Object o) { 021 tasks.addLast(o); 022 } 023 024 synchronized static private Object getTask() { 025 if (tasks.isEmpty()) return null; 026 return tasks.removeFirst(); 027 } 028 029 }