Netty(一)- Netty与BIO、NIO、AIO介绍
文章目录
一、Netty的介绍
二、Netty的应用场景
1. 互联网行业
2. 游戏行业
3. 大数据领域
三、I/O模型
1. Java BIO
(1)Java BIO 基本介绍
(2)Java BIO 工作机制
(3)Java BIO 应用实例
@Slf4j
public class BIOServer {
public static void main(String[] args) throws Exception {
ExecutorService newCachedThreadPool = Executors.newCachedThreadPool();
ServerSocket serverSocket = new ServerSocket(6666);
log.info("服务器启动了");
while (true) {
log.info("阻塞等待连接....");
final Socket socket = serverSocket.accept();
log.info("连接到一个客户端");
newCachedThreadPool.execute(() -> handler(socket));
}
}
public static void handler(Socket socket) {
try (InputStream inputStream = socket.getInputStream();) {
byte[] bytes = new byte[1024];
while (true) {
log.info("阻塞read....");
int read = inputStream.read(bytes);
if (read != -1) {
log.info("收到客户端消息:{}", new String(bytes, 0, read));
} else {
break;
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
23:33:18.906 [main] INFO com.lwk.nettydemo.bio.BIOServer - 服务器启动了
23:33:18.919 [main] INFO com.lwk.nettydemo.bio.BIOServer - 阻塞等待连接....
23:33:26.258 [main] INFO com.lwk.nettydemo.bio.BIOServer - 连接到一个客户端
23:33:26.260 [main] INFO com.lwk.nettydemo.bio.BIOServer - 阻塞等待连接....
23:33:26.261 [pool-1-thread-1] INFO com.lwk.nettydemo.bio.BIOServer - 阻塞read....
23:33:37.645 [pool-1-thread-1] INFO com.lwk.nettydemo.bio.BIOServer - 收到客户端消息:hello1
23:33:37.645 [pool-1-thread-1] INFO com.lwk.nettydemo.bio.BIOServer - 阻塞read....
23:34:20.527 [main] INFO com.lwk.nettydemo.bio.BIOServer - 连接到一个客户端
23:34:20.527 [main] INFO com.lwk.nettydemo.bio.BIOServer - 阻塞等待连接....
23:34:20.527 [pool-1-thread-2] INFO com.lwk.nettydemo.bio.BIOServer - 阻塞read....
23:34:31.339 [pool-1-thread-2] INFO com.lwk.nettydemo.bio.BIOServer - 收到客户端消息:hello2
23:34:31.339 [pool-1-thread-2] INFO com.lwk.nettydemo.bio.BIOServer - 阻塞read....
(4)Java BIO 问题分析
2. Java NIO
(1)Java NIO 基本介绍
(2)Java NIO 三大核心组件原理示意图(简单版)
3. Java AIO(NIO.2)
4. BIO、NIO、AIO适用场景分析
5. NIO 和 BIO 的比较