2011년 6월 9일 목요일

java.nio 패키지 New I/O 강좌 - 10

본 자료의 출처는 getJAVA™ 입니다.


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

댓글 없음:

댓글 쓰기

블록체인 개요 및 오픈소스 동향

블록체인(block chain) 블록체인은 공공 거래장부이며 가상 화폐로 거래할때 발생할때 발생할 수 있는 해킹을 막는 기술. 분산 데이터베이스의 한 형태로, 지속적으로 성장하는 데이터 기록 리스트로서 분산 노드의 운영자에 의한 임의 조작이 불가...