question: @ Override @ SuppressWarnings ( "unchecked" ) < V extends Number , A > Future < V > implRead ( boolean isScatteringRead , ByteBuffer dst , ByteBuffer [ ] dsts , long timeout , TimeUnit unit , A attachment , CompletionHandler < V , ? super A > handler ) { Invoker . GroupAndInvokeCount myGroupAndInvokeCount = null ; boolean invokeDirect = false ; boolean attemptRead = false ; if ( ! disableSynchronousRead ) { if ( handler == null ) { attemptRead = true ; } else { myGroupAndInvokeCount = Invoker . getGroupAndInvokeCount ( ) ; invokeDirect = Invoker . mayInvokeDirect ( myGroupAndInvokeCount , port ) ; attemptRead = invokeDirect || ! port . isFixedThreadPool ( ) ; } } int n = IOStatus . UNAVAILABLE ; Throwable exc = null ; boolean pending = false ; try { begin ( ) ; if ( attemptRead ) { if ( isScatteringRead ) { n = ( int ) IOUtil . read ( fd , dsts , nd ) ; } else { n = IOUtil . read ( fd , dst , - 1 , nd ) ; } } if ( n == IOStatus . UNAVAILABLE ) { PendingFuture < V , A > result = null ; synchronized ( updateLock ) { this . isScatteringRead = isScatteringRead ; this . readBuffer = dst ; this . readBuffers = dsts ; if ( handler == null ) { this . readHandler = null ; result = new PendingFuture < V , A > ( this , OpType . READ ) ; this . readFuture = ( PendingFuture < Number , Object > ) result ; this . readAttachment = null ; } else { this . readHandler = ( CompletionHandler < Number , Object > ) handler ; this . readAttachment = attachment ; this . readFuture = null ; } if ( timeout > 0L ) { this . readTimer = port . schedule ( readTimeoutTask , timeout , unit ) ; } this . readPending = true ; updateEvents ( ) ; } pending = true ; return result ; } } catch ( Throwable x ) { if ( x instanceof ClosedChannelException ) x = new AsynchronousCloseException ( ) ; exc = x ; } finally { if ( ! pending ) enableReading ( ) ; end ( ) ; } Number result = ( exc != null ) ? null : ( isScatteringRead ) ? ( Number ) Long . valueOf ( n ) : ( Number ) Integer . valueOf ( n ) ; if ( handler != null ) { if ( invokeDirect ) { Invoker . invokeDirect ( myGroupAndInvokeCount , handler , attachment , ( V ) result , exc ) ; } else { Invoker . invokeIndirectly ( this , handler , attachment , ( V ) result , exc ) ; } return null ; } else { return CompletedFuture . withResult ( ( V ) result , exc ) ; } }
target:  Initiates a read or scattering read operation