Mercurial > hg > blitz_condensed
comparison 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 |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:3dc0c5604566 |
---|---|
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 EDU.oswego.cs.dl.util.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 command) throws InterruptedException; | |
65 | |
66 } |