|
JavaTM Platform Standard Ed. 6 |
|||||||||
전의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 | |||||||||
개요: 상자 | 필드 | 생성자 | 메소드 | 상세: 필드 | 생성자 | 메소드 |
java.lang.Object java.nio.channels.spi.AbstractInterruptibleChannel java.nio.channels.SelectableChannel
public abstract class SelectableChannel
Selector
경유로 다중화할 수 있는 채널입니다.
셀렉터로 사용하기 위해서는, 우선,register
메소드를 사용해 이 클래스의 인스턴스를 등록할 필요가 있습니다. 이 메소드는, 채널이 셀렉터에 등록된 것을 나타내는 새로운 SelectionKey
객체를 돌려줍니다.
셀렉터에 등록된 채널은, 등록을 해제할 때까지 등록된 채로 있습니다. 등록을 해제하는데는, 셀렉터에 의해 채널에 할당할 수 있었던 자원을 해제할 필요가 있습니다.
채널의 등록을 직접 해제할 수 없습니다. 그 대신에, 등록을 나타내는 키를 취소합니다. 키를 취소하려면 , 셀렉터가 다음의 선택을 행하고 있는 동안에 채널의 등록을 해제합니다. cancel
메소드의 호출에 의해, 키를 명시적으로 취소할 수가 있습니다. close
메소드의 호출해, 또는 채널상의 입출력 조작중에 블록 된 thread에 대한 인터럽트에 의해 채널을 클로즈 하면(자), 필연적으로, 그 채널의 모든 키가 삭제됩니다.
셀렉터 자체를 클로즈 하면(자), 채널의 등록이 해제되어 그 등록을 나타내고 있던 키도 즉석에서 무효가 됩니다.
채널은 특정의 셀렉터에 대해서, 많아도 한 번 밖에 등록할 수 없습니다.
채널이 1 개 이상의 셀렉터에 등록되지 않은지 어떤지를 확인하려면 ,isRegistered
메소드를 호출합니다.
선택 가능 채널은, 복수의 병행 thread로 안전하게 사용할 수 있습니다.
isBlocking
메소드를 호출하는 것으로 판단할 수 있습니다.
새롭게 작성된 선택 가능 채널은, 항상 블록 모드가 됩니다. 비블록 모드는, 셀렉터 베이스의 다중화와 함께 가장 유용합니다. 셀렉터에 등록하기 전에, 채널을 비블록 모드로 해, 등록 해제까지 그대로 해 둘 필요가 있습니다.
SelectionKey
,
Selector
생성자 의 개요 | |
---|---|
protected |
SelectableChannel ()
이 클래스의 새로운 인스턴스를 초기화합니다. |
메소드의 개요 | |
---|---|
abstract Object |
blockingLock ()
configureBlocking 메소드와 register 메소드가 동기 하는 객체를 돌려줍니다. |
abstract SelectableChannel |
configureBlocking (boolean block)
이 채널의 블록 모드를 조정합니다. |
abstract boolean |
isBlocking ()
이 채널상의 개개의 입출력 조작이 전의 입출력 조작이 완료할 때까지 블록 될지 어떨지를 판단합니다. |
abstract boolean |
isRegistered ()
현재 이 채널이 셀렉터에 등록되어 있는지 어떤지를 판단합니다. |
abstract SelectionKey |
keyFor (Selector sel)
채널이 지정된 셀렉터에 등록되어 있는 것을 나타내는 키를 가져옵니다. |
abstract SelectorProvider |
provider ()
이 채널의 작성원프로바이더를 돌려줍니다. |
SelectionKey |
register (Selector sel,
int ops)
이 채널이 지정된 셀렉터에 등록해, 선택 키를 돌려줍니다. |
abstract SelectionKey |
register (Selector sel,
int ops,
Object att)
이 채널이 지정된 셀렉터에 등록해, 선택 키를 돌려줍니다. |
abstract int |
validOps ()
이 채널의 지원되고 있는 조작을 식별하는조작 세트를 돌려줍니다. |
클래스 java.nio.channels.spi. AbstractInterruptibleChannel 로부터 상속된 메소드 |
---|
begin , close , end , implCloseChannel , isOpen |
클래스 java.lang. Object 로부터 상속된 메소드 |
---|
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait |
인터페이스 java.nio.channels. Channel 로부터 상속된 메소드 |
---|
close , isOpen |
생성자 의 상세 |
---|
protected SelectableChannel()
메소드의 상세 |
---|
public abstract SelectorProvider provider()
public abstract int validOps()
public abstract boolean isRegistered()
키의 취소로부터 채널의 등록 해제까지의 사이에 발생하는 필연적인 지연이기 때문에, 키를 모두 취소해도, 당분간의 사이 채널의 등록은 해제되지 않습니다. 채널을 클로즈 했을 때도 같습니다.
public abstract SelectionKey keyFor(Selector sel)
public abstract SelectionKey register(Selector sel, int ops, Object att) throws ClosedChannelException
현재 이 채널이 지정된 셀렉터에 등록되어 있는 경우, 이 등록을 나타내는 선택 키가 돌려주어집니다. 키의 대상 리스트는,interestOps(int)
메소드를 호출했을 경우와 같이 ops 로 변경되고 있습니다. att 인수의 값이 null 이외의 경우, 키의 첨부는 그 값으로 설정되어 있습니다. 키가 벌써 삭제되고 있는 경우는,CancelledKeyException
가 throw 됩니다.
그 이외의 경우, 이 채널은 지정된 셀렉터에 아직 등록되어 있지 않습니다. 등록 처리뒤, 새롭게 생성된 키가 돌려주어집니다. 키의 대상 리스트의 초기치는 ops, 첨부는 att 가 됩니다.
이 메소드는 언제라도 호출할 수가 있습니다. 이 메소드의 호출중, 또는 configureBlocking
메소드의 호출중에 중복 해 이 메소드를 호출했을 경우, 새롭게 호출한 메소드는 최초의 메소드의 처리가 완료할 때까지 블록 됩니다. 그 후, 이 메소드와 셀렉터의 키 세트의 동기가 취해집니다. 이 때문에, 같은 셀렉터를 사용하는 다른 등록 또는 선택 처리와 병행해 불려 갔을 경우, 이 메소드는 블록 됩니다.
이 조작의 실행중에 이 채널이 클로즈 했을 경우, 이 메소드로부터 반환되는 키는 삭제되어 무효가 됩니다.
sel
- 이 채널의 등록처 셀렉터ops
- 결과적으로 얻을 수 있는 키의 대상 세트att
- 결과적으로 얻을 수 있는 키의 첨부. null 의 경우도 있다
ClosedChannelException
- 이 채널이 클로즈 하고 있는 경우
IllegalBlockingModeException
- 이 채널이 블록 모드의 경우
IllegalSelectorException
- 이 채널의 작성원프로바이더가 지정된 셀렉터의 작성원프로바이더와 다른 경우
CancelledKeyException
- 채널은 지정된 셀렉터에 등록되어 있지만, 대응하는 키가 벌써 삭제되고 있는 경우
IllegalArgumentException
- ops 세트내의 비트가 이 채널로 지원되는 조작에 대응하고 있지 않는 경우
(set & ~validOps() ! = 0)public final SelectionKey register(Selector sel, int ops) throws ClosedChannelException
이 메소드를 다음의 형식에서 호출하면(자), 상기의 동작을 합니다.
sc.register(sel, ops)다음의 호출과 정확하게 같은 동작이 됩니다.
sc. register
(sel, ops, null)
sel
- 이 채널의 등록처 셀렉터ops
- 결과적으로 얻을 수 있는 키의 대상 세트
ClosedChannelException
- 이 채널이 클로즈 하고 있는 경우
IllegalBlockingModeException
- 이 채널이 블록 모드의 경우
IllegalSelectorException
- 이 채널의 작성원프로바이더가 지정된 셀렉터의 작성원프로바이더와 다른 경우
CancelledKeyException
- 채널은 지정된 셀렉터에 등록되어 있지만, 대응하는 키가 벌써 삭제되고 있는 경우
IllegalArgumentException
- ops 세트내의 비트가 이 채널로 지원되는 조작에 대응하고 있지 않는 경우
(set & ~validOps() ! = 0)public abstract SelectableChannel configureBlocking(boolean block) throws IOException
이 채널이 1 개 이상의 셀렉터에 등록되어 있는 경우, 블록 모드로 설정하려고 하면(자),IllegalBlockingModeException
가 throw 됩니다.
이 메소드는 언제라도 호출할 수가 있습니다. 새로운 블록 모드는, 이 메소드의 종료후에 개시된 입출력 조작인 만큼 영향을 미칩니다. 구현에 따라서는, 보류된 입출력 조작이 완료할 때까지 블록을 속행할 필요가 있습니다.
이 메소드 또는 register
메소드의 호출중에 이 메소드를 중복 해 호출했을 경우, 새롭게 불려 간 메소드는 최초의 처리가 완료할 때까지 블록 됩니다.
block
- 이 채널이 블록 모드가 되는 경우는 true,
비블록 모드가 되는 경우는 false
ClosedChannelException
- 이 채널이 클로즈 하고 있는 경우
IllegalBlockingModeException
- block 가 true 로, 이 채널이 1 개 이상의 셀렉터에 등록되어 있는 경우
IOException
- 입출력 에러가 발생했을 경우public abstract boolean isBlocking()
이 채널이 클로즈 하고 있는 경우, 이 메소드의 반환값은 특정되지 않습니다.
public abstract Object blockingLock()
configureBlocking
메소드와 register
메소드가 동기 하는 객체를 돌려줍니다. 이 기능은, 특정의 블록 모드를 단시간 보관 유지할 필요가 있는 어댑터를 구현하는 경우에 편리합니다.
|
JavaTM Platform Standard Ed. 6 |
|||||||||
전의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 | |||||||||
개요: 상자 | 필드 | 생성자 | 메소드 | 상세: 필드 | 생성자 | 메소드 |
Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.