`

Java AIO 入门实例

阅读更多

原文出处:http://tigerlchen.iteye.com/blog/1747221

 

Java7 AIO入门实例,首先是服务端实现:

服务端代码

SimpleServer:

 

public class SimpleServer {

    public SimpleServer(int port) throws IOException {
        final AsynchronousServerSocketChannel listener = AsynchronousServerSocketChannel.open().bind(new InetSocketAddress(port));

        listener.accept(null, new CompletionHandler<AsynchronousSocketChannel, Void>() {
            public void completed(AsynchronousSocketChannel ch, Void att) {
                // 接受下一个连接
                listener.accept(null, this);

                // 处理当前连接
                handle(ch);
            }

            public void failed(Throwable exc, Void att) {

            }
        });

    }

    public void handle(AsynchronousSocketChannel ch) {
        ByteBuffer byteBuffer = ByteBuffer.allocate(32);
        try {
            ch.read(byteBuffer).get();
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (ExecutionException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        byteBuffer.flip();
        System.out.println(byteBuffer.get());
        // Do something
    }
    
}

跟着是客户端实现:
客户端代码

SimpleClient:

public class SimpleClient {
    
    private AsynchronousSocketChannel client;
    
    public SimpleClient(String host, int port) throws IOException, InterruptedException, ExecutionException {
        this.client = AsynchronousSocketChannel.open();
        Future<?> future = client.connect(new InetSocketAddress(host, port));
        future.get();
    }
    
    public void write(byte b) {
        ByteBuffer byteBuffer = ByteBuffer.allocate(32);
        byteBuffer.put(b);
        byteBuffer.flip();
        client.write(byteBuffer);
    }

}

写一个简单的测试用例来跑服务端和客户端,先运行testServer(),在运行testClient();

测试用例

AIOTest

 

public class AIOTest {
    
    @Test
    public void testServer() throws IOException, InterruptedException {
        SimpleServer server = new SimpleServer(7788);
        
        Thread.sleep(10000);
    }
    
    @Test
    public void testClient() throws IOException, InterruptedException, ExecutionException {
        SimpleClient client = new SimpleClient("localhost", 7788);
        client.write((byte) 11);
    }

}

因为是异步的,所以在运行server的时候没有发生同步阻塞,在这里我加了一个线程sleep(),如果没有的话,程序会直接跑完回收掉。

分享到:
评论

相关推荐

    Java AIO 实例(转)

    Java AIO,全称为Asynchronous Input/Output,是Java NIO的一个扩展,它引入了非阻塞的异步I/O操作,使得Java开发者能够更高效地处理I/O事件。AIO在Java 7中被引入,相较于传统的IO模型,它的优势在于能够提高并发...

    基于java的开发源码-smart-socket 开源的Java AIO框架.zip

    基于java的开发源码-smart-socket 开源的Java AIO框架.zip 基于java的开发源码-smart-socket 开源的Java AIO框架.zip 基于java的开发源码-smart-socket 开源的Java AIO框架.zip 基于java的开发源码-smart-socket ...

    高性能的java AIO通信框架 物联网参考

    Java AIO,全称为Asynchronous Input/Output,是Java NIO的一个扩展,它引入了非阻塞的异步I/O模型,使得在处理高并发、大数据传输时性能更优,尤其适合于物联网(IoT)场景,其中设备之间的通信效率至关重要。...

    JAVA 7 AIO 学习笔记

    JAVA 7 AIO 学习笔记,很详细的讲解

    java网络编程实例2

    9. **网络IO**:Java的NIO(Non-blocking I/O)和AIO(Asynchronous I/O)为网络编程提供了高效的I/O模型,特别是对于高并发场景,能够显著提升性能。 10. **实战案例**:书中可能包含各种实际的网络应用示例,如...

    基于javaaio实现,开源、简单、易用、低延迟、高性能百万级java mqtt client组件和java mqtt br服务

    Java AIO(Asynchronous Input/Output)是一种在Java中实现非阻塞I/O的方式,它在JDK 7中引入,提供了异步读写操作,能够显著提高高并发场景下的性能。基于Java AIO实现的MQTT客户端和broker服务,如标题和描述中...

    Java视频教程 Java游戏服务器端开发 Netty NIO AIO Mina视频教程

    二、java NIO,AIO编程视频教程 1、java NIO,AIO编程_01.flv 2、java NIO,AIO编程_02.flv 3、java NIO,AIO编程_03.flv 4、java NIO,AIO编程_04.flv 5、java NIO,AIO编程_05.flv 三、Java语言基础教程-Java NIO...

    基于Java AIO接口的jnet框架设计源码

    该项目是一款基于Java AIO接口的轻量级jnet框架设计源码,包含115个文件,其中包括111个Java源文件、2个XML配置文件、1个Git忽略文件以及1个Markdown文档。该框架旨在简化Java AIO编程的复杂性,不提供额外抽象,...

    基于java aio 的RPC 远程调用框架.zip

    Java AIO,全称为Asynchronous Input/Output,也被称为NIO 2,是Java平台提供的一种非阻塞I/O模型,旨在改善Java的I/O性能,特别是在处理大量并发连接时。RPC(Remote Procedure Call)是一种分布式计算技术,允许...

    基于Java Aio的高性能MQTT客户端与Broker服务设计源码

    该项目是一个开源、高性能的Java MQTT客户端与Broker服务设计源码,基于Java Aio实现,旨在提供简单、易用且低延迟的百万级客户端组件和Broker服务。项目包含289个文件,其中226个Java源文件、17个Markdown文档、13...

    smart-socket 开源的Java AIO框架.zip

    《深入解析Smart-Socket:基于Java AIO的高效网络通信框架》 Smart-Socket是一款开源的Java异步非阻塞I/O(AIO)框架,它以高效、稳定和易于扩展为特点,广泛应用于高性能、高并发的网络通信场景。在Java的世界里,...

    基于java AIO实现的RPC调用框架.zip

    Java AIO,全称为Asynchronous Input/Output,是Java NIO的一个扩展,它提供了一种异步非阻塞的I/O操作方式,特别是在处理高并发、低延迟的网络通信场景时,AIO具有显著的优势。在RPC(Remote Procedure Call)框架...

    java IO NIO AIO.xmind

    涉及到java io, nio, aio相关知识点,学习过程中的一些总结,持续更新中,xmind 格式

    基于java aio实现,开源、简单、易用、低延迟、高性能百万级java mqtt client组件和java mqtt服务

    java mqtt 基于 java aio 实现,开源、简单、易用、低延迟、高性能百万级 java mqtt client 组件和 java mqtt broker 服务

    java 之异步套接字编程实例(AIO)

    Java中的异步套接字编程,也称为非阻塞I/O(Non-blocking I/O, NIO)或异步I/O(Asynchronous I/O, AIO),是Java在JDK 7引入的一种高级I/O模型,它极大地提高了网络编程的效率。AIO的主要目标是提供一种方法,使得...

    smart-socket,一种高性能的Java AIO框架.zip

    《深入解析Smart-Socket:Java AIO框架的高性能实践》 Smart-Socket,作为一个高性能的Java AIO(Asynchronous I/O)框架,是Java开发者在处理高并发、低延迟网络通信场景下的利器。AIO,又称非阻塞I/O,相较于传统...

    smart-socket 开源的Java AIO框架.rar

    smart-socket是一款国产开源的 Java AIO 通信框架,支持 TCP、UDP、SSL/TLS 。 高性能、高并发、低延迟、低能耗 代码量极少,可读性强。核心代码不到 1500 行,工程结构、包层次清晰。 学习门槛低,二次开发只需...

    《初入JavaIO之门BIO、NIO、AIO实战练习》源码

    netty案例,netty4.1基础入门篇零《初入JavaIO之门BIO、NIO、AIO实战练习》 ...

    java BIO NIO AIO

    Java BIO NIO AIO Java BIO、NIO、AIO是 Java 中的三种 I/O 模式,每种模式都有其特点和应用场景。下面对每种模式进行详细解释。 Java BIO Java BIO( Blocking I/O)是一种同步阻塞式的 I/O 模式,即服务器实现...

Global site tag (gtag.js) - Google Analytics