Skip to content

Commit ac2c8b2

Browse files
add study note
1 parent 3d1c3fb commit ac2c8b2

File tree

1 file changed

+56
-0
lines changed
  • nio-netty/src/main/java/com/fantasybaby/l1

1 file changed

+56
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
Netty入门教程
2+
第一天内容 传统IO与NIO比较
3+
4+
5+
传送IO特点
6+
阻塞点
7+
server.accept();
8+
inputStream.read(bytes);
9+
10+
单线程情况下只能有一个客户端
11+
12+
13+
用线程池可以有多个客户端连接,但是非常消耗性能
14+
15+
16+
=======================分割线==========================
17+
18+
NIO的特点
19+
20+
ServerSocketChannel ServerSocket
21+
22+
SocketChannel Socket
23+
24+
Selector
25+
26+
SelectionKey
27+
28+
NIO的一些疑问
29+
30+
1、客户端关闭的时候会抛出异常,死循环
31+
解决方案
32+
int read = channel.read(buffer);
33+
if(read > 0){
34+
byte[] data = buffer.array();
35+
String msg = new String(data).trim();
36+
System.out.println("服务端收到信息:" + msg);
37+
38+
//回写数据
39+
ByteBuffer outBuffer = ByteBuffer.wrap("好的".getBytes());
40+
channel.write(outBuffer);// 将消息回送给客户端
41+
}else{
42+
System.out.println("客户端关闭");
43+
key.cancel();
44+
}
45+
46+
2、selector.select();阻塞,那为什么说nio是非阻塞的IO?
47+
48+
selector.select()
49+
selector.select(1000);不阻塞
50+
selector.wakeup();也可以唤醒selector
51+
selector.selectNow();也可以立马返还,视频里忘了讲了,哈,这里补上
52+
53+
54+
3、SelectionKey.OP_WRITE是代表什么意思
55+
56+
OP_WRITE表示底层缓冲区是否有空间,是则响应返还true

0 commit comments

Comments
 (0)