小编lvq*_*ang的帖子

java nio select 和 linux epoll 有什么区别?

java nio select 的代码和linux epoll 的代码看起来是一样的。没有循环获取套接字 fd 之类的东西,linux 选择代码片段确实使用循环获取套接字 fd。

所以我的问题是,java nio select 和 linux epoll 的方式是一样的吗?

java nio选择


        while (true) {
            try {
                selector.select();
                Set<SelectionKey> selectionKeys = selector.selectedKeys();
                selectionKeys.forEach((selectionKey) -> {
                    final SocketChannel client;
                    try {
                        if (selectionKey.isAcceptable()) {
                            ServerSocketChannel server = (ServerSocketChannel) selectionKey.channel();
                            client = server.accept();
                            client.configureBlocking(false);
                            client.register(selector, SelectionKey.OP_READ);

                            String key = "[" + UUID.randomUUID().toString() + "]";

                            clientMap.put(key, client);
                        } else if (selectionKey.isReadable()) {
                            client = (SocketChannel) selectionKey.channel();

                            ByteBuffer readBuffer = ByteBuffer.allocate(1024);

                            int count = client.read(readBuffer);
                            if (count …
Run Code Online (Sandbox Code Playgroud)

java select epoll nio

1
推荐指数
1
解决办法
689
查看次数

标签 统计

epoll ×1

java ×1

nio ×1

select ×1