Mercurial > hg > blitz_condensed
comparison src/EDU/oswego/cs/dl/util/concurrent/Puttable.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: Puttable.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 11Jun1998 dl Create public version | |
12 */ | |
13 | |
14 package EDU.oswego.cs.dl.util.concurrent; | |
15 | |
16 /** | |
17 * This interface exists to enable stricter type checking | |
18 * for channels. A method argument or instance variable | |
19 * in a producer object can be declared as only a Puttable | |
20 * rather than a Channel, in which case a Java compiler | |
21 * will disallow take operations. | |
22 * <p> | |
23 * Full method descriptions appear in the Channel interface. | |
24 * <p>[<a href="http://gee.cs.oswego.edu/dl/classes/EDU/oswego/cs/dl/util/concurrent/intro.html"> Introduction to this package. </a>] | |
25 * @see Channel | |
26 * @see Takable | |
27 **/ | |
28 | |
29 public interface Puttable { | |
30 | |
31 | |
32 /** | |
33 * Place item in the channel, possibly waiting indefinitely until | |
34 * it can be accepted. Channels implementing the BoundedChannel | |
35 * subinterface are generally guaranteed to block on puts upon | |
36 * reaching capacity, but other implementations may or may not block. | |
37 * @param item the element to be inserted. Should be non-null. | |
38 * @exception InterruptedException if the current thread has | |
39 * been interrupted at a point at which interruption | |
40 * is detected, in which case the element is guaranteed not | |
41 * to be inserted. Otherwise, on normal return, the element is guaranteed | |
42 * to have been inserted. | |
43 **/ | |
44 public void put(Object item) throws InterruptedException; | |
45 | |
46 | |
47 /** | |
48 * Place item in channel only if it can be accepted within | |
49 * msecs milliseconds. The time bound is interpreted in | |
50 * a coarse-grained, best-effort fashion. | |
51 * @param item the element to be inserted. Should be non-null. | |
52 * @param msecs the number of milliseconds to wait. If less than | |
53 * or equal to zero, the method does not perform any timed waits, | |
54 * but might still require | |
55 * access to a synchronization lock, which can impose unbounded | |
56 * delay if there is a lot of contention for the channel. | |
57 * @return true if accepted, else false | |
58 * @exception InterruptedException if the current thread has | |
59 * been interrupted at a point at which interruption | |
60 * is detected, in which case the element is guaranteed not | |
61 * to be inserted (i.e., is equivalent to a false return). | |
62 **/ | |
63 public boolean offer(Object item, long msecs) throws InterruptedException; | |
64 } |