태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

JAVA NIO 패키지(3) - NIO 의 특징

Posted 2008/09/18 15:13


댓글 하나가 운영자에겐 커다란 힘이 됩니다!

1. 자바의 포인터 버퍼 도입

NIO에서 Buffer 클래스를 도입했다. 커널에 의해 관리되는 시스템 메모리를 직접 사용할 수 있는 Buffer 클래스가 도입되었다. (단, DirectByteBuffer 클래스에 한정)

Buffer 클래스의 하부 구현은 C로 되어 있고 추상화된 Buffer만을 사용하는 것이다. 기존에 배열로 처리해야 했던 많은 부분들을 효율적으로 다룰수 있는 메서드를 제공해준다.

 

2. 네이티브 IO 서비스를 제공해주는 channel 제공

 Channel은 스트림처럼 읽기 전용, 쓰기 전용의 단방향에서부터, 읽고 쓰는 양방향 통신이 가능한 세가지 형식이 존재한다.

Channel은 Buffer 클래스와 함께 작업하도록 만들어져 있다. 그럼으로 시스템 메모리인 버퍼에 직접적으로 데이터를 읽거나 쓸 수 있게 되었다. 또한 Scatter/Gather를 구현해서 효율적으로 IO를 처리할 수 있게 되었다.

 

3. 셀렉터 도입

기존 자바 네트워크 프로그래밍은 클라이언트 하나당 스레드 하나를 생성해서 처리해야 했으므로 사용자가 늘어나면 급격한 성능 저하를 불러 일으켰다.

하지만 NIO에서는 네트워크 프로그래밍의 확장성과 유연성, 효율성을 높이기 위해서 버퍼, 채널과 함게 사용되는 셀렉터를 이용함으로써  단 한개의 스레드만으로 수천에서 머신이 허용하는 한도내에서 수만 명의 동시 사용자를 처리할 수 있는 서버를 만들 수 있게 되었다.


위의 정보가 도움이 되셨나요? 그렇다면 댓글 하나만 남겨주세요.
댓글 하나가 운영자에겐 커다란 힘이 됩니다!

Write your message and submit
« PREV : 1 : ... 181 : 182 : 183 : 184 : 185 : 186 : 187 : 188 : 189 : ... 436 : NEXT »