KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > logicalcobwebs > 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 org.logicalcobwebs.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