KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > logicalcobwebs > concurrent > Executor


1 /*
2   File: Executor.java
3
4   Originally written by Doug Lea and released into the public domain.
5   This may be used for any purposes whatsoever without acknowledgment.
6   Thanks for the assistance and support of Sun Microsystems Labs,
7   and everyone contributing, testing, and using this code.
8
9   History:
10   Date Who What
11   19Jun1998 dl Create public version
12 */

13
14 package org.logicalcobwebs.concurrent;
15
16 /**
17  * Interface for objects that execute Runnables,
18  * as well as various objects that can be wrapped
19  * as Runnables.
20  * The main reason to use Executor throughout a program or
21  * subsystem is to provide flexibility: You can easily
22  * change from using thread-per-task to using pools or
23  * queuing, without needing to change most of your code that
24  * generates tasks.
25  * <p>
26  * The general intent is that execution be asynchronous,
27  * or at least independent of the caller. For example,
28  * one of the simplest implementations of <code>execute</code>
29  * (as performed in ThreadedExecutor)
30  * is <code>new Thread(command).start();</code>.
31  * However, this interface allows implementations that instead
32  * employ queueing or pooling, or perform additional
33  * bookkeeping.
34  * <p>
35  *
36  * <p>[<a HREF="http://gee.cs.oswego.edu/dl/classes/EDU/oswego/cs/dl/util/concurrent/intro.html"> Introduction to this package. </a>]
37  **/

38 public interface Executor {
39     /**
40      * Execute the given command. This method is guaranteed
41      * only to arrange for execution, that may actually
42      * occur sometime later; for example in a new
43      * thread. However, in fully generic use, callers
44      * should be prepared for execution to occur in
45      * any fashion at all, including immediate direct
46      * execution.
47      * <p>
48      * The method is defined not to throw
49      * any checked exceptions during execution of the command. Generally,
50      * any problems encountered will be asynchronous and
51      * so must be dealt with via callbacks or error handler
52      * objects. If necessary, any context-dependent
53      * catastrophic errors encountered during
54      * actions that arrange for execution could be accompanied
55      * by throwing context-dependent unchecked exceptions.
56      * <p>
57      * However, the method does throw InterruptedException:
58      * It will fail to arrange for execution
59      * if the current thread is currently interrupted.
60      * Further, the general contract of the method is to avoid,
61      * suppress, or abort execution if interruption is detected
62      * in any controllable context surrounding execution.
63      **/

64     public void execute(Runnable JavaDoc command) throws InterruptedException JavaDoc;
65
66 }
67
Popular Tags