01: /*
02: File: Barrier.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: 11Jun1998 dl Create public version
12: */
13:
14: package EDU.oswego.cs.dl.util.concurrent;
15:
16: /**
17: * Barriers serve
18: * as synchronization points for groups of threads that
19: * must occasionally wait for each other.
20: * Barriers may support any of several methods that
21: * accomplish this synchronization. This interface
22: * merely expresses their minimal commonalities:
23: * <ul>
24: * <li> Every barrier is defined for a given number
25: * of <code>parties</code> -- the number of threads
26: * that must meet at the barrier point. (In all current
27: * implementations, this
28: * value is fixed upon construction of the Barrier.)
29: * <li> A barrier can become <code>broken</code> if
30: * one or more threads leave a barrier point prematurely,
31: * generally due to interruption or timeout. Corresponding
32: * synchronization methods in barriers fail, throwing
33: * BrokenBarrierException for other threads
34: * when barriers are in broken states.
35: * </ul>
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: **/
39: public interface Barrier {
40:
41: /**
42: * Return the number of parties that must meet per barrier
43: * point. The number of parties is always at least 1.
44: **/
45:
46: public int parties();
47:
48: /**
49: * Returns true if the barrier has been compromised
50: * by threads leaving the barrier before a synchronization
51: * point (normally due to interruption or timeout).
52: * Barrier methods in implementation classes throw
53: * throw BrokenBarrierException upon detection of breakage.
54: * Implementations may also support some means
55: * to clear this status.
56: **/
57:
58: public boolean broken();
59: }
|