티스토리 뷰
Java NIO는 기존 IO API와는 다른 IO 프로그래밍 모델을 제공합니다.
Non-Blocking
NIO를 사용하면 Non-blocking IO를 수행할 수 있습니다.
하지만 NIO를 사용한다고 해서 완벽하게 Non-blocking방식을 사용이 가능하다고 할 수 없습니다.
스레드가 버퍼로 데이터를 읽어오라고 채널에 요청합니다.
채널이 버퍼로 데이터를 읽는 동안 스레드는 다른작업을 수행할 수 있습니다.
Channels and Buffers
표준 IO API는 바이트 스트림, 문자 스트림으로 작업을 하며
NIO API는 채널과 버퍼로 작업합니다.
Selectors
연결알림, 데이터 도착등 이벤트에 대해 모니터링 하는 개체입니다.
단일 스레드가 여러 채널의 데이터를 모니터링이 가능해집니다.
NIO의 중심구성요소 3가지
1. Channel
2. Buffer
3. Selector
Channel과 Buffer
일반적으로 NIO의 모든 IO는 채널에서 시작됩니다.
채널은 IO API의 스트림과 약간 비슷합니다.
채널에서 버퍼로 데이터를 읽을수도 있으며 ( channel -> buffer )
버퍼에서 채널로 데이터를 쓸수도 있습니다. ( buffer -> channel )
채널의 기본 구현목록
1. FileChannel
2. DatagramChannel
3. SocketChannel
4. ServerSocketChannel
버퍼의 기본 구현목록
1. ByteBuffer
2. CharBuffer
3. DoubleBuffer
4. FloatBuffer
5. LongBuffer
6. ShotBuffer
Selctors
셀렉터를 사용하면 단일스레드가 여러 채널을 처리할 수 있습니다.
애플리케이션에 연결된 채널이 많지만 각 연결의 트래픽이 적을경우 유용합니다. ( EX 채팅서버 )
'Java & Kotlin' 카테고리의 다른 글
Java raw type (0) | 2022.12.12 |
---|---|
Java Generic (0) | 2022.12.12 |
Java Buffer (0) | 2022.12.11 |
Java Stream (0) | 2022.12.10 |
Java annotation (0) | 2022.12.10 |
- Total
- Today
- Yesterday
- boot 일대다
- 백준 제로
- JPA
- 스택
- 자바
- 개발자채용
- java8
- Spring
- boot
- jdk11
- springboot
- 백준 제로 자바
- 알고리즘
- jre11
- 관계설정
- 프로그래머
- JDK8
- 문제
- mappedby
- 다대일
- jre
- 코딩테스트
- 스타트업
- JDK
- 백준
- 백엔드
- jre8
- 자사서비스
- jvm
- ㅃ
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |