Akashic Records

자바 nio - 10 본문

오래된글/Java

자바 nio - 10

Andrew's Akashic Records 2018. 4. 9. 12:32
728x90

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 클래스로부터 비롯된다.


728x90

'오래된글 > 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
Comments