21 |
|
|
22 |
|
private static final String TEST_STRING = "a test string"; |
23 |
|
|
24 |
– |
private static class MyTask implements Runnable { |
25 |
– |
public void run() { completed = true; } |
26 |
– |
public boolean isCompleted() { return completed; } |
27 |
– |
public void reset() { completed = false; } |
28 |
– |
private boolean completed = false; |
29 |
– |
} |
30 |
– |
|
24 |
|
private static class StringTask implements Callable<String> { |
25 |
|
public String call() { return TEST_STRING; } |
26 |
|
} |
72 |
|
}; |
73 |
|
|
74 |
|
/** |
82 |
– |
* For use as ThreadFactory in constructors |
83 |
– |
*/ |
84 |
– |
static class MyThreadFactory implements ThreadFactory{ |
85 |
– |
public Thread newThread(Runnable r){ |
86 |
– |
return new Thread(r); |
87 |
– |
} |
88 |
– |
} |
89 |
– |
|
90 |
– |
/** |
75 |
|
* A newCachedThreadPool can execute runnables |
76 |
|
*/ |
77 |
|
public void testNewCachedThreadPool1() { |
86 |
|
* A newCachedThreadPool with given ThreadFactory can execute runnables |
87 |
|
*/ |
88 |
|
public void testNewCachedThreadPool2() { |
89 |
< |
ExecutorService e = Executors.newCachedThreadPool(new MyThreadFactory()); |
89 |
> |
ExecutorService e = Executors.newCachedThreadPool(new SimpleThreadFactory()); |
90 |
|
e.execute(new NoOpRunnable()); |
91 |
|
e.execute(new NoOpRunnable()); |
92 |
|
e.execute(new NoOpRunnable()); |
121 |
|
* A new SingleThreadExecutor with given ThreadFactory can execute runnables |
122 |
|
*/ |
123 |
|
public void testNewSingleThreadExecutor2() { |
124 |
< |
ExecutorService e = Executors.newSingleThreadExecutor(new MyThreadFactory()); |
124 |
> |
ExecutorService e = Executors.newSingleThreadExecutor(new SimpleThreadFactory()); |
125 |
|
e.execute(new NoOpRunnable()); |
126 |
|
e.execute(new NoOpRunnable()); |
127 |
|
e.execute(new NoOpRunnable()); |
155 |
|
* A new newFixedThreadPool with given ThreadFactory can execute runnables |
156 |
|
*/ |
157 |
|
public void testNewFixedThreadPool2() { |
158 |
< |
ExecutorService e = Executors.newFixedThreadPool(2, new MyThreadFactory()); |
158 |
> |
ExecutorService e = Executors.newFixedThreadPool(2, new SimpleThreadFactory()); |
159 |
|
e.execute(new NoOpRunnable()); |
160 |
|
e.execute(new NoOpRunnable()); |
161 |
|
e.execute(new NoOpRunnable()); |
192 |
|
public void testExecuteRunnable () { |
193 |
|
try { |
194 |
|
Executor e = new DirectExecutor(); |
195 |
< |
MyTask task = new MyTask(); |
196 |
< |
assertFalse(task.isCompleted()); |
195 |
> |
TrackedRunnable task = new TrackedRunnable(); |
196 |
> |
assertFalse(task.done); |
197 |
|
Future<String> future = Executors.execute(e, task, TEST_STRING); |
198 |
|
String result = future.get(); |
199 |
< |
assertTrue(task.isCompleted()); |
199 |
> |
assertTrue(task.done); |
200 |
|
assertSame(TEST_STRING, result); |
201 |
|
} |
202 |
|
catch (ExecutionException ex) { |
213 |
|
public void testInvokeRunnable () { |
214 |
|
try { |
215 |
|
Executor e = new DirectExecutor(); |
216 |
< |
MyTask task = new MyTask(); |
217 |
< |
assertFalse(task.isCompleted()); |
216 |
> |
TrackedRunnable task = new TrackedRunnable(); |
217 |
> |
assertFalse(task.done); |
218 |
|
Executors.invoke(e, task); |
219 |
< |
assertTrue(task.isCompleted()); |
219 |
> |
assertTrue(task.done); |
220 |
|
} |
221 |
|
catch (ExecutionException ex) { |
222 |
|
unexpectedException(); |
267 |
|
*/ |
268 |
|
public void testNullExecuteRunnable () { |
269 |
|
try { |
270 |
< |
MyTask task = new MyTask(); |
271 |
< |
assertFalse(task.isCompleted()); |
270 |
> |
TrackedRunnable task = new TrackedRunnable(); |
271 |
> |
assertFalse(task.done); |
272 |
|
Future<String> future = Executors.execute(null, task, TEST_STRING); |
273 |
|
shouldThrow(); |
274 |
|
} |
285 |
|
public void testExecuteNullRunnable() { |
286 |
|
try { |
287 |
|
Executor e = new DirectExecutor(); |
288 |
< |
MyTask task = null; |
288 |
> |
TrackedRunnable task = null; |
289 |
|
Future<String> future = Executors.execute(e, task, TEST_STRING); |
290 |
|
shouldThrow(); |
291 |
|
} |
302 |
|
public void testInvokeNullRunnable () { |
303 |
|
try { |
304 |
|
Executor e = new DirectExecutor(); |
305 |
< |
MyTask task = null; |
305 |
> |
TrackedRunnable task = null; |
306 |
|
Executors.invoke(e, task); |
307 |
|
shouldThrow(); |
308 |
|
} |