首页
学习
活动
专区
圈层
工具
发布
综合排序最热优先最新优先
时间不限
Java AIO 异步IO应用实例
java.io.IOException; import java.net.InetSocketAddress; import java.nio.ByteBuffer; import java.nio.channels.AsynchronousChannelGroup asynchronousChannelGroup; protected AsynchronousServerSocketChannel serverChannel; public this.threadSize = threadSize; init(); } private void init(){ try { asynchronousChannelGroup = AsynchronousChannelGroup.withCachedThreadPool(Executors.newCachedThreadPool(), 10); serverChannel = AsynchronousServerSocketChannel.open(asynchronousChannelGroup); serverChannel.bind(new
WindWant
2020-09-11
8830
标签:
Java NIO.2 异步调度中枢:AsynchronousChannelGroup 源码深度剖析与线程池契约
前言:被低估的异步I/O资源边界在JavaNIO.2(AIO)的体系中,AsynchronousChannelGroup是一个常被忽视却至关重要的基础设施。 AsynchronousChannelGroup不仅仅是一个“线程池包装器”。它是I/O完成事件与业务回调之间的调度契约,是通道生命周期与执行器生命周期的绑定纽带,更是异步关闭语义的传播边界。 本文将基于JDK源码与规范文档,对AsynchronousChannelGroup进行逐层解构。 第一章:核心定位与架构角色1.1Group的本质:I/O事件的调度域AsynchronousChannelGroup的核心职责不是“管理通道”,而是封装I/O完成事件的派发机制。 具体而言:展开代码语言:TXTAI代码解释OS异步原语(IOCP/epoll/io_uring)│▼┌─────────────────────┐│AsynchronousChannelGroup│←调度域边界
jack.yang
2026-05-25
970
标签:
Java 非阻塞 IO 和异步 IO
在 Unix/Linux 等系统中,JDK 使用了并发包中的线程池来管理任务,具体可以查看 AsynchronousChannelGroup 的源码。 Asynchronous Channel Groups 为了知识的完整性,有必要对 group 进行介绍,其实也就是介绍 AsynchronousChannelGroup 这个类。 executor, int initialSize) AsynchronousChannelGroup.withFixedThreadPool(int nThreads, ThreadFactory 它们都是 AsynchronousChannelGroup 中的静态方法。 至于 group 的使用就很简单了,代码一看就懂: AsynchronousChannelGroup group = AsynchronousChannelGroup .withFixedThreadPool
用户1257393
2018-03-21
1.6K0
标签:
Java网络编程 -- AIO异步网络编程
AIO其实是对NIO的增强,新增了许多支持异步的类如AsynchronousServerSocketChannel,AsynchronousChannel,AsynchronousChannelGroup // 多线程版本 // ExecutorService executorService = Executors.newCachedThreadPool(); // AsynchronousChannelGroup channelGroup = // AsynchronousChannelGroup.withCachedThreadPool(executorService, 1);
CodingDiray
2019-09-25
1.3K0
标签:
Java网络编程和NIO详解5:Java 非阻塞 IO 和异步 IO
在 Unix/Linux 等系统中,JDK 使用了并发包中的线程池来管理任务,具体可以查看 AsynchronousChannelGroup 的源码。 Asynchronous Channel Groups 为了知识的完整性,有必要对 group 进行介绍,其实也就是介绍 AsynchronousChannelGroup 这个类。 executor, int initialSize) AsynchronousChannelGroup.withFixedThreadPool(int nThreads, ThreadFactory 它们都是 AsynchronousChannelGroup 中的静态方法。 至于 group 的使用就很简单了,代码一看就懂: AsynchronousChannelGroup group = AsynchronousChannelGroup .withFixedThreadPool
Java技术江湖
2019-11-21
7010
标签:
Java 非阻塞 IO 和异步 IO
在 Unix/Linux 等系统中,JDK 使用了并发包中的线程池来管理任务,具体可以查看 AsynchronousChannelGroup 的源码。 Asynchronous Channel Groups 为了知识的完整性,有必要对 group 进行介绍,其实也就是介绍 AsynchronousChannelGroup 这个类。 executor, int initialSize) AsynchronousChannelGroup.withFixedThreadPool(int nThreads, ThreadFactory 它们都是 AsynchronousChannelGroup 中的静态方法。 至于 group 的使用就很简单了,代码一看就懂: AsynchronousChannelGroup group = AsynchronousChannelGroup .withFixedThreadPool
精讲java
2018-07-03
2.5K0
标签:
Java NIO 并发关闭语义:AsynchronousCloseException 源码深度剖析与异步中断契约
我们将从其类型谱系出发,深入剖析同步NIO与异步AIO中关闭传播机制的差异,揭示它在Selector、ServerSocketChannel、AsynchronousChannelGroup等关键组件中的触发路径 outstanding操作都收到通知线程身份执行I/O的线程Group线程池中的某个线程后续操作抛ClosedChannelExceptionfailed(ClosedChannelException)3.3AsynchronousChannelGroup 的级联关闭当AsynchronousChannelGroup.shutdownNow()被调用时:展开代码语言:TXTAI代码解释shutdownNow()│├──标记group为SHUTDOWN├──
jack.yang
2026-05-25
1150
标签:
Java NIO.2 异步基石:AsynchronousChannelProvider 源码深度剖析与 SPI 架构哲学
答案就是AsynchronousChannelGroup。 5.3虚拟线程的协同虽然AsynchronousChannelProvider本身不直接涉及虚拟线程,但其创建的AsynchronousChannelGroup可以与虚拟线程调度器协同。 7.2vsRusttokio的RuntimeTokio的Runtime类似于AsynchronousChannelGroup,但更通用(不仅限于I/O)。
jack.yang
2026-05-24
1360
标签:
Java I/O 操作及优化建议
,监听端口等; java.nio.channels.AsynchronousSocketChannel:面向流的异步 Socket Channel,表示一个连接; java.nio.channels.AsynchronousChannelGroup 一个 AsynchronousChannelGroup 绑定一个线程池,这个线程池执行两个任务:处理 IO 事件和派发 CompletionHandler。 AsynchronousServerSocketChannel 创建的时候可以传入一个 AsynchronousChannelGroup,那么通过 AsynchronousServerSocketChannel API 允许两种方式来处理异步操作的结果:返回的 Future 模式或者注册 CompletionHandler,推荐用 CompletionHandler 的方式,这些 handler 的调用是由 AsynchronousChannelGroup
技术从心
2019-08-07
6870
标签:
BIO NIO AIO演变1 BIO2 NIO3 AIO4 常见面试题5 总结
import java.net.InetSocketAddress; import java.nio.channels.AsynchronousChannelGroup; import java.nio.channels.AsynchronousServerSocketChannel class ITDragonAIOServer { private ExecutorService executorService; // 线程池 private AsynchronousChannelGroup executorService = Executors.newCachedThreadPool(); // 2.创建通道组 threadGroup = AsynchronousChannelGroup.withCachedThreadPool
JavaEdge
2018-08-10
1.6K0
标签:
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档