comparison src/EDU/oswego/cs/dl/util/concurrent/LockedExecutor.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: LockedExecutor.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 21Jun1998 dl Create public version
12 */
13
14 package EDU.oswego.cs.dl.util.concurrent;
15
16 /**
17 * An implementation of Executor that
18 * invokes the run method of the supplied command within
19 * a synchronization lock and then returns.
20 *
21 * <p>[<a href="http://gee.cs.oswego.edu/dl/classes/EDU/oswego/cs/dl/util/concurrent/intro.html"> Introduction to this package. </a>]
22 **/
23 public class LockedExecutor implements Executor {
24
25 /** The mutex **/
26 protected final Sync mutex_;
27
28 /**
29 * Create a new LockedExecutor that relies on the given mutual
30 * exclusion lock.
31 * @param mutex Any mutual exclusion lock.
32 * Standard usage is to supply an instance of <code>Mutex</code>,
33 * but, for example, a Semaphore initialized to 1 also works.
34 * On the other hand, many other Sync implementations would not
35 * work here, so some care is required to supply a sensible
36 * synchronization object.
37 **/
38
39 public LockedExecutor(Sync mutex) {
40 mutex_ = mutex;
41 }
42
43 /**
44 * Execute the given command directly in the current thread,
45 * within the supplied lock.
46 **/
47 public void execute(Runnable command) throws InterruptedException {
48 mutex_.acquire();
49 try {
50 command.run();
51 }
52 finally {
53 mutex_.release();
54 }
55 }
56
57 }