_key.interestOps(_interestOps = _key.interestOps() & (-1 ^ SelectionKey.OP_WRITE));
_interestOps = _key.interestOps() & ~SelectionKey.OP_WRITE; _key.interestOps(_interestOps); }
        void dispatch() throws IOException        {            synchronized (this)            {                if (_key==null)                {                    _timeoutTask.cancel();                    return;                }                                _timeoutTask.reschedule();                // If threads are blocked on this                if (_readBlocked > 0 || _writeBlocked > 0)                {                    // wake them up is as good as a dispatched.                    this.notifyAll();                                        // we are not interested in further selecting                    _key.interestOps(0);                    return;                }                else if (!_assumeShortDispatch)                    _key.interestOps(0);                                    // Otherwise if we are still dispatched                if (_dispatched)                {                    // we are not interested in further selecting                    _key.interestOps(0);                    return;                }                // Remove writeable op                if (_key==null)                    return;                if ((_key.readyOps() | SelectionKey.OP_WRITE) != 0 && (_key.interestOps() | SelectionKey.OP_WRITE) != 0)                    // Remove writeable op                    _key.interestOps(_interestOps = _key.interestOps() & (-1 ^ SelectionKey.OP_WRITE));                                _dispatched = true;            }            boolean dispatch_done = false;            try            {                dispatch_done = getThreadPool().dispatch(this);            }            finally            {                if (!dispatch_done)                {                    Log.warn("dispatch failed! threads="+getThreadPool().getThreads()+" idle="+getThreadPool().getIdleThreads());                    undispatch();                }            }        }