ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/src/main/java/util/concurrent/ExecutorService.java
Revision: 1.10
Committed: Wed Dec 10 13:00:13 2003 UTC (20 years, 6 months ago) by dl
Branch: MAIN
Changes since 1.9: +3 -1 lines
Log Message:
Documentation updates

File Contents

# User Rev Content
1 dl 1.1 /*
2     * Written by Doug Lea with assistance from members of JCP JSR-166
3     * Expert Group and released to the public domain. Use, modify, and
4     * redistribute this code in any way without acknowledgement.
5     */
6    
7     package java.util.concurrent;
8    
9     import java.util.List;
10 tim 1.8 import java.security.PrivilegedAction;
11     import java.security.PrivilegedExceptionAction;
12 dl 1.1
13     /**
14 dl 1.10 * An <tt>Executor</tt> that provides methods to manage termination
15     * and those that can produce a {@link Future} for tracking
16     * progress of an asynchronous task.
17 dl 1.7 * An <tt>ExecutorService</tt> can be shut down, which will cause it
18     * to stop accepting new tasks. After being shut down, the executor
19     * will eventually terminate, at which point no tasks are actively
20 dl 1.1 * executing, no tasks are awaiting execution, and no new tasks can be
21     * submitted.
22     *
23 dl 1.7 * <p>The {@link Executors} class provides factory methods for the
24     * executor services provided in this package.
25 dl 1.1 *
26     * @since 1.5
27 dl 1.5 * @author Doug Lea
28 dl 1.1 */
29     public interface ExecutorService extends Executor {
30 tim 1.8
31     /**
32     * Submits a Runnable task for execution and returns a Future
33     * representing that task.
34     *
35     * @param task the task to submit
36     * @return a Future representing pending completion of the task,
37     * and whose <tt>get()</tt> method will return an arbitrary value
38     * upon completion
39     * @throws RejectedExecutionException if task cannot be scheduled
40     * for execution
41     */
42     Future<?> submit(Runnable task);
43    
44     /**
45     * Submits a value-returning task for execution and returns a Future
46     * representing the pending results of the task.
47     *
48     * @param task the task to submit
49     * @return a Future representing pending completion of the task
50     * @throws RejectedExecutionException if task cannot be scheduled
51     * for execution
52     */
53     <T> Future<T> submit(Callable<T> task);
54    
55     /**
56     * Executes a Runnable task and blocks until it completes normally
57     * or throws an exception.
58     *
59     * @param task the task to submit
60     * @throws RejectedExecutionException if task cannot be scheduled
61     * for execution
62     * @throws ExecutionException if the task encountered an exception
63     * while executing
64     */
65     void invoke(Runnable task) throws ExecutionException, InterruptedException;
66    
67     /**
68     * Executes a value-returning task and blocks until it returns a
69     * value or throws an exception.
70     *
71     * @param task the task to submit
72     * @return a Future representing pending completion of the task
73     * @throws RejectedExecutionException if task cannot be scheduled
74     * for execution
75     * @throws InterruptedException if interrupted while waiting for
76     * completion
77     * @throws ExecutionException if the task encountered an exception
78     * while executing
79     */
80     <T> T invoke(Callable<T> task) throws ExecutionException, InterruptedException;
81    
82    
83     /**
84     * Submits a privileged action for execution under the current
85     * access control context and returns a Future representing the
86     * pending result object of that action.
87     *
88     * @param action the action to submit
89     * @return a Future representing pending completion of the action
90     * @throws RejectedExecutionException if action cannot be scheduled
91     * for execution
92     */
93     Future<Object> submit(PrivilegedAction action);
94    
95     /**
96     * Submits a privileged exception action for execution under the current
97     * access control context and returns a Future representing the pending
98     * result object of that action.
99     *
100     * @param action the action to submit
101     * @return a Future representing pending completion of the action
102     * @throws RejectedExecutionException if action cannot be scheduled
103     * for execution
104     */
105     Future<Object> submit(PrivilegedExceptionAction action);
106    
107 dl 1.1
108     /**
109 dl 1.6 * Initiates an orderly shutdown in which previously submitted
110     * tasks are executed, but no new tasks will be
111     * accepted. Invocation has no additional effect if already shut
112     * down.
113 dl 1.1 *
114     */
115     void shutdown();
116    
117     /**
118     * Attempts to stop all actively executing tasks, halts the
119     * processing of waiting tasks, and returns a list of the tasks that were
120     * awaiting execution.
121     *
122     * <p>There are no guarantees beyond best-effort attempts to stop
123     * processing actively executing tasks. For example, typical
124     * implementations will cancel via {@link Thread#interrupt}, so if any
125     * tasks mask or fail to respond to interrupts, they may never terminate.
126     *
127     * @return list of tasks that never commenced execution
128     */
129 tim 1.9 List<Runnable> shutdownNow();
130 dl 1.1
131     /**
132     * Returns <tt>true</tt> if this executor has been shut down.
133     *
134     * @return <tt>true</tt> if this executor has been shut down
135     */
136     boolean isShutdown();
137    
138     /**
139     * Returns <tt>true</tt> if all tasks have completed following shut down.
140     * Note that <tt>isTerminated</tt> is never <tt>true</tt> unless
141     * either <tt>shutdown</tt> or <tt>shutdownNow</tt> was called first.
142     *
143     * @return <tt>true</tt> if all tasks have completed following shut down
144     */
145     boolean isTerminated();
146    
147     /**
148     * Blocks until all tasks have completed execution after a shutdown
149     * request, or the timeout occurs, or the current thread is
150     * interrupted, whichever happens first.
151     *
152     * @param timeout the maximum time to wait
153     * @param unit the time unit of the timeout argument
154     * @return <tt>true</tt> if this executor terminated and <tt>false</tt>
155     * if the timeout elapsed before termination
156     * @throws InterruptedException if interrupted while waiting
157     */
158     boolean awaitTermination(long timeout, TimeUnit unit)
159     throws InterruptedException;
160 dl 1.3
161 dl 1.1 }