10. java.nio.channels 클래스
이제부터 채널 클래스들을 살펴본다. 이들 클래스들은 앞서 살펴본 인터페이스를 하나 혹은 둘 이상을 구현하고 있다. 따라서 상속관계와 인터페이스를 구현에 따른 기능들을 유심히 살펴본다. 우선 전체적인 계층도를 보자.
채널 클래스들의 최상위 클래스는 java.nio.channels.spi. AbstractInterruptibleChannel 클래스이다. 이 클래스는 InterruptibleChannel 인터페이스를 구현한 Abstract class로서 사실상 모든 채널 관련 클래스의 상위 클래스이다. 이 클래스의 패키지는 java.nio.channels.spi인데 SPI(Service Provider Interface)로 프로그래머가 제공하는 클래스로 대체할 수 있는 기능을 제공해준다. 이는 관련된 클래스들의 기본 구현을 프로그래머가 바꿀 수 있다는 뜻이 된다. 단, 이것은 특별한 경우에만 해당되므로 이런 것이 있다는 정도만 알아두자.
1. AbstractInterruptibleChannel 클래스
1) 특징
AbstractInterruptibleChannel클래스는 모든 채널 클래스의 상위 클래스이다.
상속하는 클래스로는 FileChannel, SelectableChannel클래스이다.
비동기적으로 외부에서 채널 클래스들의 작업을 중단시킬수 있다.(Non-Blocking 을 지원해 준다.)
AbstractInterruptibleChannel 클래스의 특징은 크게 3가지로 볼 수있는데 그중에서 눈여겨 볼 것이 바로 3번이다. 이러한 특징으로 AbstractInterruptibleChannel 클래스를 주로 사용은 하지만 직접 쓰는 경우는 없다. 그럼 어떤 원리로 외부에서 중단이 가능한 건지는 우선 이 클래스가 가진 메서드를 먼저 살펴보고 알아보자.
2) 주요 메서드
- protected void begin() : 입출력 동작이 일어나기 전에 호출된다.
- void close() : 현재 채널을 닫는다.
- protected void end(boolean completed) : 입출력 동작이 일어난 후에 호출된다.
- protected abstract void implCloseChannel() : 현재 채널을 닫는다.
- boolean isOpen() : 현재 채널이 열려있는지 아닌지를 리턴
AbstractInterruptibleChannel 클래스는 직접 사용하는 경우는 없지만 채널 클래스들이 비동기적으로 외부에 의해서 중단될 수 있도록하는 기능을 제공해준다. 이 클래스를 상속하는 클래스는 FileChannel 클래스와 SelectabelChannel클래스이다. FileChannel 클래스는 파일과 관련된 채널 클래스이며, SelectabelChannel클래스는 여러 채널이 동시에 입출력을 수행하며 이중에서 입출력이 진행된 채널만을 골라서 처리할 수 있게 해주는 기능을 가진다. 이들 클래스에 외부에서 중지시킬수 있는 기능은 바로 AbstractInterruptibleChannel 클래스로부터 비롯된다.
'오래된글 > Java' 카테고리의 다른 글
자바 nio - 12 (0) | 2018.04.09 |
---|---|
자바 nio - 11 (0) | 2018.04.09 |
자바 nio - 9 (0) | 2018.04.09 |
자바 nio - 8 (0) | 2018.04.09 |
자바 nio - 7 (0) | 2018.04.09 |