KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > logicalcobwebs > concurrent > Takable


1 /*
2   File: Takable.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 consumer object can be declared as only a Takable
20  * rather than a Channel, in which case a Java compiler
21  * will disallow put 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 Puttable
27  **/

28
29 public interface Takable {
30
31     /**
32      * Return and remove an item from channel,
33      * possibly waiting indefinitely until
34      * such an item exists.
35      * @return some item from the channel. Different implementations
36      * may guarantee various properties (such as FIFO) about that item
37      * @exception InterruptedException if the current thread has
38      * been interrupted at a point at which interruption
39      * is detected, in which case state of the channel is unchanged.
40      *
41      **/

42     public Object JavaDoc take() throws InterruptedException JavaDoc;
43
44
45     /**
46      * Return and remove an item from channel only if one is available within
47      * msecs milliseconds. The time bound is interpreted in a coarse
48      * grained, best-effort fashion.
49      * @param msecs the number of milliseconds to wait. If less than
50      * or equal to zero, the operation does not perform any timed waits,
51      * but might still require
52      * access to a synchronization lock, which can impose unbounded
53      * delay if there is a lot of contention for the channel.
54      * @return some item, or null if the channel is empty.
55      * @exception InterruptedException if the current thread has
56      * been interrupted at a point at which interruption
57      * is detected, in which case state of the channel is unchanged
58      * (i.e., equivalent to a false return).
59      **/

60
61     public Object JavaDoc poll(long msecs) throws InterruptedException JavaDoc;
62
63 }
64
Popular Tags