|
JavaTM Platform Standard Ed. 6 |
|||||||||
전의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 | |||||||||
개요: 상자 | 필드 | 생성자 | 메소드 | 상세: 필드 | 생성자 | 메소드 |
java.lang.Objectjava.nio.channels.spi.AbstractInterruptibleChannel
public abstract class AbstractInterruptibleChannel
인터럽트 가능 채널의 베이스 구현 클래스입니다.
이 클래스는, 채널의 비동기 클로즈와 비동기 인터럽트를 구현하는데 필요한 저레벨의 기구를 캡슐화하고 있습니다. 구상 채널 클래스는, 무기한으로 블록 될 가능성이 있는 입출력 조작의 호출전에 구상 채널 클래스는, 이 클래스는,
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에 대해서 동기 처리를 할 필요는 없습니다.
생성자 의 개요 | |
---|---|
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 |
생성자 의 상세 |
---|
protected AbstractInterruptibleChannel()
메소드의 상세 |
---|
public final void close() throws IOException
채널이 벌써 클로즈 하고 있는 경우, 이 메소드는 즉시 종료합니다. 그 이외의 경우는, 채널의 클로즈를 마크 하고 나서, 클로즈 조작을 완료하기 위해서 implCloseChannel
메소드를 호출합니다.
Closeable
내의 close
Channel
내의 close
InterruptibleChannel
내의 close
IOException
- 입출력 에러가 발생했을 경우protected abstract void implCloseChannel() throws IOException
이 메소드는, 채널을 클로즈 하는 실제의 처리를 실행하기 위해서 close
메소드에 의해 불려 갑니다. 이 메소드는, 채널이 아직 클로즈 하고 있지 않는 경우에게만 불려 가 2 회 이상 불려 갈 것은 없습니다.
이 메소드의 구현은, 이 채널에 대한 입출력 조작의 도중에 블록 되는 그 외의 thread를, 예외를 throw 하는지, 일반적으로의 방법을 사용해 즉시 종료시키게 되어 있습니다.
IOException
- 채널의 클로즈중에 입출력 에러가 발생했을 경우public final boolean isOpen()
Channel
의 기술:
Channel
내의 isOpen
protected final void begin()
이 셀렉터의 인터럽트를 구현하려면 ,상기에 나타낸 try ... finally 블록을 사용해, 이 메소드와 end
메소드를 페어로 호출할 필요가 있습니다.
protected final void end(boolean completed) throws AsynchronousCloseException
이 채널의 비동기 클로즈와 비동기 인터럽트를 구현하고는,상기에 나타냈던 대로,try ... finally 블록을 사용해 이 메소드와 begin
메소드를 페어로 호출할 필요가 있습니다.
completed
- 입출력 조작이 올바르게 완료했을 경우, 즉 조작의 호출 측에 하등의 변화를 볼 수 있었을 경우에 한해 true
AsynchronousCloseException
- 채널이 비동기 클로즈 되었을 경우
ClosedByInterruptException
- 입출력 조작중에 블록 된 thread에 인터럽트가 발생했을 경우
|
JavaTM Platform Standard Ed. 6 |
|||||||||
전의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 | |||||||||
개요: 상자 | 필드 | 생성자 | 메소드 | 상세: 필드 | 생성자 | 메소드 |
Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.