KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > EDU > oswego > cs > dl > util > concurrent > Puttable


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 JavaDoc item) throws InterruptedException JavaDoc;
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 JavaDoc item, long msecs) throws InterruptedException JavaDoc;
64 }
65
Popular Tags