01: /*
02: File: NullSync.java
03:
04: Originally written by Doug Lea and released into the public domain.
05: This may be used for any purposes whatsoever without acknowledgment.
06: Thanks for the assistance and support of Sun Microsystems Labs,
07: and everyone contributing, testing, and using this code.
08:
09: History:
10: Date Who What
11: 1Aug1998 dl Create public version
12: */
13:
14: package EDU.oswego.cs.dl.util.concurrent;
15:
16: /**
17: * A No-Op implementation of Sync. Acquire never blocks,
18: * Attempt always succeeds, Release has no effect.
19: * However, acquire and release do detect interruption
20: * and throw InterruptedException. Also, the methods
21: * are synchronized, so preserve memory barrier properties
22: * of Syncs.
23: * <p>
24: * NullSyncs can be useful in optimizing classes when
25: * it is found that locking is not strictly necesssary.
26: *
27: * <p>[<a href="http://gee.cs.oswego.edu/dl/classes/EDU/oswego/cs/dl/util/concurrent/intro.html"> Introduction to this package. </a>]
28: **/
29:
30: public class NullSync implements Sync {
31:
32: public synchronized void acquire() throws InterruptedException {
33: if (Thread.interrupted())
34: throw new InterruptedException();
35: }
36:
37: public synchronized boolean attempt(long msecs)
38: throws InterruptedException {
39: if (Thread.interrupted())
40: throw new InterruptedException();
41: return true;
42: }
43:
44: public synchronized void release() {
45: }
46:
47: }
|