Mercurial > hg > blitz_condensed
diff src/EDU/oswego/cs/dl/util/concurrent/Executor.java @ 0:3dc0c5604566
Initial checkin of blitz 2.0 fcs - no installer yet.
author | Dan Creswell <dan.creswell@gmail.com> |
---|---|
date | Sat, 21 Mar 2009 11:00:06 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/EDU/oswego/cs/dl/util/concurrent/Executor.java Sat Mar 21 11:00:06 2009 +0000 @@ -0,0 +1,66 @@ +/* + File: Executor.java + + Originally written by Doug Lea and released into the public domain. + This may be used for any purposes whatsoever without acknowledgment. + Thanks for the assistance and support of Sun Microsystems Labs, + and everyone contributing, testing, and using this code. + + History: + Date Who What + 19Jun1998 dl Create public version +*/ + +package EDU.oswego.cs.dl.util.concurrent; + +/** + * Interface for objects that execute Runnables, + * as well as various objects that can be wrapped + * as Runnables. + * The main reason to use Executor throughout a program or + * subsystem is to provide flexibility: You can easily + * change from using thread-per-task to using pools or + * queuing, without needing to change most of your code that + * generates tasks. + * <p> + * The general intent is that execution be asynchronous, + * or at least independent of the caller. For example, + * one of the simplest implementations of <code>execute</code> + * (as performed in ThreadedExecutor) + * is <code>new Thread(command).start();</code>. + * However, this interface allows implementations that instead + * employ queueing or pooling, or perform additional + * bookkeeping. + * <p> + * + * <p>[<a href="http://gee.cs.oswego.edu/dl/classes/EDU/oswego/cs/dl/util/concurrent/intro.html"> Introduction to this package. </a>] + **/ +public interface Executor { + /** + * Execute the given command. This method is guaranteed + * only to arrange for execution, that may actually + * occur sometime later; for example in a new + * thread. However, in fully generic use, callers + * should be prepared for execution to occur in + * any fashion at all, including immediate direct + * execution. + * <p> + * The method is defined not to throw + * any checked exceptions during execution of the command. Generally, + * any problems encountered will be asynchronous and + * so must be dealt with via callbacks or error handler + * objects. If necessary, any context-dependent + * catastrophic errors encountered during + * actions that arrange for execution could be accompanied + * by throwing context-dependent unchecked exceptions. + * <p> + * However, the method does throw InterruptedException: + * It will fail to arrange for execution + * if the current thread is currently interrupted. + * Further, the general contract of the method is to avoid, + * suppress, or abort execution if interruption is detected + * in any controllable context surrounding execution. + **/ + public void execute(Runnable command) throws InterruptedException; + +}