com.samskivert.util.RunQueue Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of samskivert Show documentation
Show all versions of samskivert Show documentation
A collection of Java utilities.
//
// $Id$
//
// samskivert library - useful routines for java programs
// Copyright (C) 2001-2010 Michael Bayne, et al.
//
// This library is free software; you can redistribute it and/or modify it
// under the terms of the GNU Lesser General Public License as published
// by the Free Software Foundation; either version 2.1 of the License, or
// (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
package com.samskivert.util;
import java.awt.EventQueue;
import java.util.concurrent.Executor;
/**
* An interface for a service that queues up execution of Runnables.
*/
public interface RunQueue
{
/** A useful RunQueue that uses the AWT dispatch thread. */
public static final RunQueue AWT = new RunQueue() {
public void postRunnable (Runnable r) {
EventQueue.invokeLater(r);
}
public boolean isDispatchThread () {
return EventQueue.isDispatchThread();
}
public boolean isRunning () {
return true;
}
};
/**
* Wee helper class to adapt a RunQueue into an Executor.
* While we transition from RunQueue to Executor.
*/
public static class AsExecutor
implements Executor
{
public AsExecutor (RunQueue toAdapt)
{
_runQueue = toAdapt;
}
// from Executor
public void execute (Runnable command)
{
_runQueue.postRunnable(command);
}
protected RunQueue _runQueue;
}
/**
* Post the specified Runnable to be run on the RunQueue.
*/
void postRunnable (Runnable r);
/**
* @return true if the calling thread is the RunQueue dispatch thread.
*/
boolean isDispatchThread ();
/**
* @return true if this run queue is still processing runnables, false if it has been shutdown.
*/
boolean isRunning ();
}