总结
- AsynchronousSocketChannel虚拟类实现了AsynchronousByteChannel接口和NetworkChannel接口,自然具有这两个接口的语义
- AsynchronousSocketChannel虚拟类是面向流的连接套接字的异步通道,有两种创建方式,第一种通过调用此类定义的open方法创建的,通过此方法创建的通道虽然已打开,但尚未连接,第二种方法是连接到AsynchronousServerSocketChannel的套接字时,将创建连接的AsynchronousSocketChannel通道
- 通过调用其connect方法连接远程通道,一旦连接,通道将保持连接,直到关闭,
套接字通道是否连接可以通过调用其getRemoteAddress方法来确定。 试图在未连接的通道上调用I/O操作将导致抛出notyetConnectionException - 这种类型的通道可供多个并发线程安全使用,它们支持并发读写,但在任何时候最多只能执行一个读操作和一个写操作,如果线程在前一个读取操作完成之前启动读取操作,则将抛出ReadPendingException。类似地,在上一次写入完成之前尝试启动写入操作将抛出writependingsexception
- 此类定义的read(ByteBuffer,long,TimeUnit,Object,CompletionHandler)和
write(ByteBuffer,long,TimeUnit,Object,CompletionHandler)方法允许在启动读或写操作时指定超时。 如果在操作完成之前超时已过,则操作将以异常InterruptedByTimeoutException完成。 超时可能使通道或基础连接处于不一致的状态。如果实现无法保证未从通道读取字节,则会将通道置