文件的「异步 I/O」到底是不是真的异步?回调在哪个线程?这篇只验证线程模型与使用方式(没有对比真实磁盘的吞吐;内存映射与 WatchService 在前面的篇目)。
调用线程 = main;200 个并发 read 的 CompletionHandler 运行在这些线程名上:[Thread-N],是否守护线程:[true] 此时除了 main 与 JVM 系统线程之外的线程数 = 17 线程名:[Thread-0, Thread-1, Thread-10, Thread-11, Thread-12, Thread-13, Thread-14, Thread-15, Thread-16, Thread-2, Thread-3, Thread-4, Thread-5, Thread-6, Thread-7, Thread-8, Thread-9]
自定义线程池(2 个线程)时,CompletionHandler 的线程名 = [my-io-N] 线程池 shutdown 之后再发 read:RejectedExecutionException
64 个并发的写(每个 4096 字节写到不同位置):共写入 262144 字节,耗时 1 ms 读回校验:每个位置的内容都是对应的值:true Future 形式读 8 MB:返回 8388608 字节,耗时 1 ms 异步加锁 ch.lock().get():isValid = true,isShared = false