Teknologi NIO yang dilaksanakan dalam fungsi Java membolehkan aplikasi mengendalikan operasi I/O dengan cekap tanpa menyekat benang lain. Ia memanfaatkan: Saluran tidak menyekat (NioSocketChannel dan NioServerSocketChannel) Pemilih untuk memantau status saluran Dengar sebelah pelayan untuk sambungan masuk dan mencipta saluran baharu Pelanggan menyambung ke pelayan dan menghantar permintaan Kelebihan termasuk responsif yang tinggi, pengasingan benang dan kebolehskalaan
Teknologi NIO yang dilaksanakan dalam fungsi Java
Gambaran Keseluruhan
Teknologi NIO (tidak menyekat I/O) ialah teknologi I/O tak segerak yang membolehkan aplikasi beroperasi tanpa menyekat rangkaian dan rangkaian lain fail. Melaksanakan NIO dalam fungsi Java boleh meningkatkan prestasi I/O aplikasi anda dan responsif.
Kes praktikal
Menggunakan NioServerSocketChannel dan NioSocketChannel
NIO bahagian pelayan menggunakan NioServerSocketChannel
侦听传入连接,并使用 NioSocketChannel
为每个连接创建一个新的通道。客户端使用 NioSocketChannel
untuk menyambung ke pelayan.
// 服务器端 ServerSocketChannel serverSocketChannel = ServerSocketChannel.open(); serverSocketChannel.bind(new InetSocketAddress(PORT)); while (true) { SocketChannel socketChannel = serverSocketChannel.accept(); ... // 处理请求 } // 客户端 SocketChannel socketChannel = SocketChannel.open(); socketChannel.connect(new InetSocketAddress(HOST, PORT)); ... // 发送请求
Gunakan Pemilih
Pemilih digunakan untuk memantau status berbilang saluran. Pemilih memberitahu aplikasi apabila satu atau lebih saluran boleh dibaca, boleh ditulis atau disambungkan.
// 初始化 selector Selector selector = Selector.open(); // 注册服务器端 channel 到 selector serverSocketChannel.register(selector, SelectionKey.OP_ACCEPT); // 循环监听事件 while (true) { // 阻塞直到一个或多个通道就绪 int readyChannels = selector.select(); if (readyChannels > 0) { Set<SelectionKey> selectedKeys = selector.selectedKeys(); for (SelectionKey key : selectedKeys) { if (key.isAcceptable()) { // 处理传入连接 } else if (key.isReadable()) { // 处理可读数据 } else if (key.isWritable()) { // 处理可写数据 } } selectedKeys.clear(); } }
Kelebihan
Atas ialah kandungan terperinci Bagaimanakah teknologi NIO dilaksanakan dalam fungsi Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!