diff 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
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/EDU/oswego/cs/dl/util/concurrent/Puttable.java	Sat Mar 21 11:00:06 2009 +0000
@@ -0,0 +1,64 @@
+/*
+  File: Puttable.java
+
+  Originally written by Doug Lea and released into the public domain.
+  This may be used for any purposes whatsoever without acknowledgment.
+  Thanks for the assistance and support of Sun Microsystems Labs,
+  and everyone contributing, testing, and using this code.
+
+  History:
+  Date       Who                What
+  11Jun1998  dl               Create public version
+*/
+
+package EDU.oswego.cs.dl.util.concurrent;
+
+/** 
+ * This interface exists to enable stricter type checking
+ * for channels. A method argument or instance variable
+ * in a producer object can be declared as only a Puttable
+ * rather than a Channel, in which case a Java compiler
+ * will disallow take operations.
+ * <p>
+ * Full method descriptions appear in the Channel interface.
+ * <p>[<a href="http://gee.cs.oswego.edu/dl/classes/EDU/oswego/cs/dl/util/concurrent/intro.html"> Introduction to this package. </a>]
+ * @see Channel
+ * @see Takable
+**/
+
+public interface Puttable {
+
+
+  /** 
+   * Place item in the channel, possibly waiting indefinitely until
+   * it can be accepted. Channels implementing the BoundedChannel
+   * subinterface are generally guaranteed to block on puts upon
+   * reaching capacity, but other implementations may or may not block.
+   * @param item the element to be inserted. Should be non-null.
+   * @exception InterruptedException if the current thread has
+   * been interrupted at a point at which interruption
+   * is detected, in which case the element is guaranteed not
+   * to be inserted. Otherwise, on normal return, the element is guaranteed
+   * to have been inserted.
+  **/
+  public void put(Object item) throws InterruptedException;
+
+
+  /** 
+   * Place item in channel only if it can be accepted within
+   * msecs milliseconds. The time bound is interpreted in
+   * a coarse-grained, best-effort fashion. 
+   * @param item the element to be inserted. Should be non-null.
+   * @param msecs the number of milliseconds to wait. If less than
+   * or equal to zero, the method does not perform any timed waits,
+   * but might still require
+   * access to a synchronization lock, which can impose unbounded
+   * delay if there is a lot of contention for the channel.
+   * @return true if accepted, else false
+   * @exception InterruptedException if the current thread has
+   * been interrupted at a point at which interruption
+   * is detected, in which case the element is guaranteed not
+   * to be inserted (i.e., is equivalent to a false return).
+  **/
+  public boolean offer(Object item, long msecs) throws InterruptedException;
+}