Basic Concepts
1. Channel & Buffer: data is always read from channel to buffer, or writtern from buffer to channel
2. Non-blocking IO: non-blocking while read and write data
3. Selector: A single thread monitor multiple channels for data
http://tutorials.jenkov.com/java-nio/index.html
Channel & Buffer
Selector
Single thread using just one selector can handle many connections open (channels), but low traffic on each connection (why low traffic?)
1. POSA2 Selector Pattern
2. Why should low traffic is assumption of channel is low traffic?
3. What is better way to handle the heavy traffic application?
4. Is channel also at the same thread of selector?
To use a selector, register a channel with it
Channels
1. FileChannel <=> Files
2. DatagramChannel <=> UDP
3. SocketChannel <=> TCP
4. ServerSocketChannel, listen for incoming TCP connections, like a web server. For each connection, a SocketChannel is created
Buffer
Four steps using buffer:
1. Write data into buffer
2. Call buffer.flip() // filp switch from writting mode to reading modepos
3. Read data out of buffer
4. Call buffer.clear() or buffer.compact() // once all data have read all the data, need to clear the buffer, to make it ready for writing again
capacity & position & limit
capacity: the fixed memory block for buffer
position and limit are depends on which mode (the writing mode or reading mode?)
References:
http://tutorials.jenkov.com/java-nio/non-blocking-server.html#non-blocking-server-github-repository
http://www.drdobbs.com/jvm/high-performance-io-with-java-nio/184406242
本文深入探讨了Java NIO的核心概念,包括Channel与Buffer的工作机制、非阻塞IO的特点及Selector如何帮助单线程管理多个连接。同时介绍了不同类型的Channel及其用途,并详细说明了使用Buffer进行数据读写的四个步骤。
766

被折叠的 条评论
为什么被折叠?



