0
点赞
收藏
分享

微信扫一扫

Netty(一)- Netty与BIO、NIO、AIO介绍

全栈学习笔记 2022-12-05 阅读 60

文章目录

一、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 {

        /**
         * 线程池机制
         * 1.创建一个线程池
         * 2.如果有客户端连接,就创建一个线程,与之通讯(单独写一个方法)
         */
        ExecutorService newCachedThreadPool = Executors.newCachedThreadPool();

        // 创建ServerSocket
        ServerSocket serverSocket = new ServerSocket(6666);

        log.info("服务器启动了");

        while (true) {
            // 监听,等待客户端连接
            log.info("阻塞等待连接....");
            final Socket socket = serverSocket.accept();
            log.info("连接到一个客户端");

            // 创建一个线程,与之通讯(单独写一个方法)
            newCachedThreadPool.execute(() -> handler(socket));
        }


    }

    // 编写一个handler方法,和客户端通讯
    public static void handler(Socket 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 的比较

举报

相关推荐

0 条评论