Home » concurrent-sources » EDU.oswego.cs.dl.util.concurrent » [javadoc | source]

    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   }

Home » concurrent-sources » EDU.oswego.cs.dl.util.concurrent » [javadoc | source]