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

댓글 없음:

댓글 쓰기

ETL 솔루션 환경

ETL 솔루션 환경 하둡은 대용량 데이터를 값싸고 빠르게 분석할 수 있는 길을 만들어줬다. 통계분석 엔진인 “R”역시 하둡 못지 않게 관심을 받고 있다. 빅데이터 역시 데이터라는 점을 볼때 분산처리와 분석 그 이전에 데이터 품질 등 데이...