首页 > 其他分享 >12.NIO-AIO文件异步

12.NIO-AIO文件异步

时间:2022-10-12 13:57:20浏览次数:67  
标签:12 NIO read buffer AIO attachment ByteBuffer new public

1.5.6、文件异步AIO
@Slf4j
public class AIOTest {
    public static void main(String[] args) {
        try {
            AsynchronousFileChannel channel = AsynchronousFileChannel.open(Paths.get("a.txt"));

            ByteBuffer buffer = ByteBuffer.allocate(128);
            //buffer 开始位置 附件 回调方法
            log.debug("read begin..");
            channel.read(buffer, 0, buffer, new CompletionHandler<Integer, ByteBuffer>() {
                //result:读到的字节数
                //attachment:附件
                @Override//成功回调
                public void completed(Integer result, ByteBuffer attachment) {
                    log.debug("read succ..");
                   /* attachment.flip();
                    ByteBufferUtil.debugAll(attachment);*/

                    attachment.flip();
                    byte[] data = new byte[attachment.limit()];
                    attachment.get(data);
                    System.out.println(new String(data));
                    attachment.clear();
                }

                @Override//失败回调
                public void failed(Throwable exc, ByteBuffer attachment) {
                    exc.printStackTrace();
                }
            });
            log.debug("read end..");
            System.in.read();
        } catch (Exception e) {
            throw new RuntimeException(e);
        }

    }
}

标签:12,NIO,read,buffer,AIO,attachment,ByteBuffer,new,public
From: https://www.cnblogs.com/jpymll/p/16784278.html

相关文章

  • 8.NIO-多线程优化
    1.4.4、多线程优化设计思路:分两组选择器单线程配一个选择器,专门处理accpet事件(建立连接)BOSS创建多线程,每个线程一个选择器,专门处理read事件WORK服务端@Slf4jp......
  • 9.NIO-多线程work轮询
    1.4.5、多线程多work轮询@Slf4jpublicclassThreadServerWorks{publicstaticvoidmain(String[]args)throwsIOException,InterruptedException{T......
  • 10.NIO-IO模型
    1.5、NIOBIO1.5.1、StreamChannelstream不会自动缓冲数据,channel会利用系统提供的发送缓冲区、接收缓冲区(更为底层)stream仅支持阻塞API,channel同时支持阻塞、非......
  • 5.NIO-网络编程-阻塞VS非阻塞
    1.4、网络编程1.4.1阻塞VS非阻塞阻塞:ServerSocketChannel.accept()阻塞到客户端连接SocketChannel.read()阻塞到客户端发送数据//服务端@Slf4jpublicclassSo......
  • 6.NIO-selector详解
    1.4.2、selector单线程可以配合Selector完成对多个Channel可读写事件的监控,这称之为多路复用只能用于网络IO,文件IO不可用,因为FileChannel没有阻塞模式如果不用sele......
  • 7.NIO-selector-写入内容过多
    1.4.3、写入内容过多服务端publicclassWriteServer{publicstaticvoidmain(String[]args)throwsIOException{ServerSocketChannelssc=ServerS......
  • 1.1.NIO-三大组件
    1、NIO基础non-blockingio非阻塞io1.1、三大组件1.1.1、Channel&Bufferchannel类似于stream,它就是读写数据的双向通道,可以从channel将数据读入buffer,也可以将buffer......
  • #打卡不停更#在开鸿智谷NiobeU4移植lvgl并实现ADC按键状态显示
    本文主要分享在开鸿智谷NiobeU4开发板移植lvgl经验,并实现按键按下sw4显示SW4Pressed松开显示SW4Release,整理踩坑经验分享如下。1.移植准备开鸿智谷NiobeU4开发板Openhar......
  • 带你走近MISRA C:2012
    汽车软件与C语言  随着软件定义汽车概念的兴起,汽车软件开发的工作量开始呈指数级增加,当前车载软件代码量已经达到1亿-3亿行。这是一个什么概念呢,相当于比Windows系统......
  • [20221012]TNS-12543 TNSdestination host unreachable.txt
    [20221012]TNS-12543TNSdestinationhostunreachable.txt--//今天尝试本机连接测试库,出现如下问题.sqlplus报ORA-12543:TNS:destinationhostunreachable错误.R:\>tns......