| 
 | JavaTM Platform Standard Ed. 6 | |||||||||
| 上一个类 下一个类 | 框架 无框架 | |||||||||
| 摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 | |||||||||
java.lang.Objectjava.nio.channels.spi.AbstractInterruptibleChannel
public abstract class AbstractInterruptibleChannel
     可中断通道的基本实现类。
 此类封装了实现通道异步关闭和中断所需的低级别机制。在调用可能无限期阻塞的 I/O 操作之前和之后,具体的通道类必须分别调用 begin 和 end 方法。为了确保始终能够调用 end 方法,应该在 try ... finally 块中使用这些方法: 
   
 boolean completed = false;
 try {
     begin();
     completed = ...;    // Perform blocking I/O operation
return ...;         // Return result
 } finally {
     end(completed);
 }
  
   
   end 方法的 completed 参数告知 I/O 操作实际是否已完成,也就是说它是否有任何对调用者可见的效果。例如,在读取字节的操作中,当且仅当确实将某些字节传输到调用者的目标缓冲区时此参数才应该为 true。 
 具体的通道类还必须实现 implCloseChannel 方法,其方式为:如果调用此方法的同时,另一个线程阻塞在该通道上的本机 I/O 操作中,则该操作将立即返回,要么抛出异常,要么正常返回。如果某个线程被中断,或者异步地关闭了阻塞线程所处的通道,则该通道的 end 方法会抛出相应的异常。 
 此类执行实现 Channel 规范所需的同步。implCloseChannel 方法的实现不必与其他可能试图关闭通道的线程同步。
| 构造方法摘要 | |
|---|---|
| protected  | AbstractInterruptibleChannel()初始化此类的一个新实例。 | 
| 方法摘要 | |
|---|---|
| protected  void | begin()标记可能无限期阻塞的 I/O 操作的开始。 | 
|  void | close()关闭此通道。 | 
| protected  void | end(boolean completed)标记可能无限期阻塞的 I/O 操作的结尾。 | 
| protected abstract  void | implCloseChannel()关闭此通道。 | 
|  boolean | isOpen()判断此通道是否处于打开状态。 | 
| 从类 java.lang.Object 继承的方法 | 
|---|
| clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | 
| 构造方法详细信息 | 
|---|
protected AbstractInterruptibleChannel()
| 方法详细信息 | 
|---|
public final void close()
                 throws IOException 
   如果已关闭该通道,则此方法立即返回。否则它会将该通道标记为已关闭,然后调用 implCloseChannel 方法以完成关闭操作。 
Closeable 中的 
      close
     Channel 中的 
      close
     InterruptibleChannel 中的 
      close
     IOException - 如果发生 I/O 错误
     
protected abstract void implCloseChannel()
                                  throws IOException 
   为了实际关闭此通道,由 close 方法调用此方法。仅在此通道尚未关闭时才能调用此方法,并且只能调用一次。 
此方法的实现必须安排阻塞于此通道上 I/O 操作中的所有其他线程立即返回,要么抛出异常,要么正常返回。
IOException - 如果关闭通道的同时发生 I/O 错误
     public final boolean isOpen()
Channel 复制的描述
   
Channel 中的 
      isOpen
     protected final void begin()
protected final void end(boolean completed)
                  throws AsynchronousCloseException 
   为了实现此通道的异步关闭和中断,应该使用上面所示的 try ... finally 块先后调用此方法和 begin 方法。
completed - 当且仅当 I/O 操作成功完成(也就是说该操作产生对其调用者可见的效果)时才为 
      true 
     AsynchronousCloseException - 如果已经异步地关闭了通道 
     ClosedByInterruptException - 如果已中断了阻塞在 I/O 操作中的线程
     | 
 | JavaTM Platform Standard Ed. 6 | |||||||||
| 上一个类 下一个类 | 框架 无框架 | |||||||||
| 摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 | |||||||||
版权所有 2007 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策。