JavaTM Platform
Standard Ed. 6

java.nio.channels.spi
클래스 AbstractInterruptibleChannel

java.lang.Object 
  상위를 확장 java.nio.channels.spi.AbstractInterruptibleChannel
모든 구현된 인터페이스:
Closeable , Channel , InterruptibleChannel
직계의 기존의 서브 클래스:
FileChannel , SelectableChannel


public abstract class AbstractInterruptibleChannel
extends Object
implements Channel , InterruptibleChannel

인터럽트 가능 채널의 베이스 구현 클래스입니다.

이 클래스는, 채널의 비동기 클로즈와 비동기 인터럽트를 구현하는데 필요한 저레벨의 기구를 캡슐화하고 있습니다. 구상 채널 클래스는, 무기한으로 블록 될 가능성이 있는 입출력 조작의 호출전에 begin 메소드를, 호출 후에 end 메소드를 각각 호출할 필요가 있습니다. 덧붙여end 메소드가 반드시 불려 가도록(듯이),try ... finally 블록내에서 이러한 메소드를 사용하도록 해 주세요.

 boolean completed = false;
 try {
     begin();
     completed = ...;    // Perform blocking I/O operation
     return ...;         // Return result
 } finally {
     end(completed);
 }

end 메소드의 completed 인수는, 입출력 조작이 실제로 완료했는지 어떠했는지, 즉, 호출원으로 무엇인가의 변화를 인식할 수 있을지 어떨지를 나타냅니다. 예를 들어, 바이트를 읽어내는 조작의 경우, 호출원의 타겟 버퍼에 실제로 바이트가 전송 되었을 경우에 한정해, 이 인수가 true 가 됩니다.

구상 채널 클래스는,implCloseChannel 메소드도 구현할 필요가 있습니다. 그 경우, 채널에 대한 네이티브의 입출력 조작의 도중에 블록 되고 있는 thread가 있을 때 이 메소드가 불려 가면(자), 예외를 throw 할까 일반적으로의 방법으로 즉시 종료하도록(듯이) 구현합니다. thread에 인터럽트가 발생했을 경우나, thread를 블록 하고 있는 채널이 비동기에 클로즈 되었을 경우, 채널의 end 메소드는 해당하는 예외를 throw 합니다.

이 클래스는,Channel 의 스펙을 구현하는데 필요한 동기 처리를 실시합니다. implCloseChannel 메소드의 구현에서는, 채널을 클로즈 하려고 하는 것 외의 thread에 대해서 동기 처리를 할 필요는 없습니다.

도입된 버젼:
1.4

생성자 의 개요
protected AbstractInterruptibleChannel ()
          이 클래스의 새로운 인스턴스를 초기화합니다.
 
메소드의 개요
protected  void begin ()
          무기한으로 블록 되는 입출력 조작의 개시를 마크 합니다.
 void close ()
          현재의 채널을 클로즈 합니다.
protected  void end (boolean completed)
          무기한으로 블록 되는 입출력 조작의 종료를 마크 합니다.
protected abstract  void implCloseChannel ()
          현재의 채널을 클로즈 합니다.
 boolean isOpen ()
          현재의 채널 상태가 오픈일지 어떨지를 판단합니다.
 
클래스 java.lang. Object 로부터 상속된 메소드
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
 

생성자 의 상세

AbstractInterruptibleChannel

protected AbstractInterruptibleChannel()
이 클래스의 새로운 인스턴스를 초기화합니다.

메소드의 상세

close

public final void close()
                 throws IOException 
현재의 채널을 클로즈 합니다.

채널이 벌써 클로즈 하고 있는 경우, 이 메소드는 즉시 종료합니다. 그 이외의 경우는, 채널의 클로즈를 마크 하고 나서, 클로즈 조작을 완료하기 위해서 implCloseChannel 메소드를 호출합니다.

정의:
인터페이스 Closeable 내의 close
정의:
인터페이스 Channel 내의 close
정의:
인터페이스 InterruptibleChannel 내의 close
예외:
IOException - 입출력 에러가 발생했을 경우

implCloseChannel

protected abstract void implCloseChannel()
                                  throws IOException 
현재의 채널을 클로즈 합니다.

이 메소드는, 채널을 클로즈 하는 실제의 처리를 실행하기 위해서 close 메소드에 의해 불려 갑니다. 이 메소드는, 채널이 아직 클로즈 하고 있지 않는 경우에게만 불려 가 2 회 이상 불려 갈 것은 없습니다.

이 메소드의 구현은, 이 채널에 대한 입출력 조작의 도중에 블록 되는 그 외의 thread를, 예외를 throw 하는지, 일반적으로의 방법을 사용해 즉시 종료시키게 되어 있습니다.

예외:
IOException - 채널의 클로즈중에 입출력 에러가 발생했을 경우

isOpen

public final boolean isOpen()
인터페이스 Channel 의 기술:
현재의 채널 상태가 오픈일지 어떨지를 판단합니다.

정의:
인터페이스 Channel 내의 isOpen
반환값:
현재의 채널이 오픈인 경우에 한해 true

begin

protected final void begin()
무기한으로 블록 되는 입출력 조작의 개시를 마크 합니다.

이 셀렉터의 인터럽트를 구현하려면 ,상기에 나타낸 try ... finally 블록을 사용해, 이 메소드와 end 메소드를 페어로 호출할 필요가 있습니다.


end

protected final void end(boolean completed)
                  throws AsynchronousCloseException 
무기한으로 블록 되는 입출력 조작의 종료를 마크 합니다.

이 채널의 비동기 클로즈와 비동기 인터럽트를 구현하고는,상기에 나타냈던 대로,try ... finally 블록을 사용해 이 메소드와 begin 메소드를 페어로 호출할 필요가 있습니다.

파라미터:
completed - 입출력 조작이 올바르게 완료했을 경우, 즉 조작의 호출 측에 하등의 변화를 볼 수 있었을 경우에 한해 true
예외:
AsynchronousCloseException - 채널이 비동기 클로즈 되었을 경우
ClosedByInterruptException - 입출력 조작중에 블록 된 thread에 인터럽트가 발생했을 경우

JavaTM Platform
Standard Ed. 6

버그의 보고와 기능의 요청
한층 더 자세한 API 레퍼런스 및 개발자 문서에 대해서는,Java SE 개발자용 문서를 참조해 주세요. 개발자전용의 상세한 해설, 개념의 개요, 용어의 정의, 버그의 회피책, 및 코드 실례가 포함되어 있습니다.

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.