src/share/classes/java/nio/channels/Selector.java

Print this page

        

@@ -304,10 +304,19 @@
      * operation</a>.  It returns only after at least one channel is selected,
      * this selector's {@link #wakeup wakeup} method is invoked, the current
      * thread is interrupted, or the given timeout period expires, whichever
      * comes first.
      *
+     * <p>
+     * Note an application should not check <tt>OP_CONNECT</tt> again, once a
+     * channel is already connected. In this situation, Selector will always
+     * treat <tt> OP_CONNECT</tt> as ready. If do so with only one key in this
+     * selector, and only one <tt>OP_CONNECT</tt> operation in the key's
+     * interest set, this method will return immediately with no entries in the
+     * selected key set.
+     * </p>
+     *
      * <p> This method does not offer real-time guarantees: It schedules the
      * timeout as if by invoking the {@link Object#wait(long)} method. </p>
      *
      * @param  timeout  If positive, block for up to <tt>timeout</tt>
      *                  milliseconds, more or less, while waiting for a

@@ -336,10 +345,27 @@
      * <p> This method performs a blocking <a href="#selop">selection
      * operation</a>.  It returns only after at least one channel is selected,
      * this selector's {@link #wakeup wakeup} method is invoked, or the current
      * thread is interrupted, whichever comes first.  </p>
      *
+     * <p>
+     * Note an application should not check <tt>OP_CONNECT</tt> again, once a
+     * channel is already connected. In this situation, Selector will always
+     * treat <tt> OP_CONNECT</tt> as ready. If do so with only one key in this
+     * selector, and only one <tt>OP_CONNECT</tt> operation in the key's
+     * interest set, this method will return immediately with no entries in the
+     * selected key set.
+     * </p>
+     *
+     * <p>
+     * Note that for <tt>OP_CONNECT</tt>, once a channel is already connected,
+     * an application should not check <tt>OP_CONNECT</tt> again. In this
+     * situation, Selector will ignore <tt>OP_CONNECT</tt>. If there is only one
+     * key in this selector, and only one <tt>OP_CONNECT</tt> operation in the key's
+     * interest set, this method will return immediately.
+     * </p>
+     *
      * @return  The number of keys, possibly zero,
      *          whose ready-operation sets were updated
      *
      * @throws  IOException
      *          If an I/O error occurs

@@ -364,10 +390,19 @@
      * again in the meantime.
      *
      * <p> Invoking this method more than once between two successive selection
      * operations has the same effect as invoking it just once.  </p>
      *
+     * <p>
+     * Note an application should not check <tt>OP_CONNECT</tt> again, once a
+     * channel is already connected. In this situation, Selector will always
+     * treat <tt> OP_CONNECT</tt> as ready. If do so with only one key in this
+     * selector, and only one <tt>OP_CONNECT</tt> operation in the key's
+     * interest set, this method will return immediately with no entries in the
+     * selected key set.
+     * </p>
+     *
      * @return  This selector
      */
     public abstract Selector wakeup();
 
     /**