【发布时间】:2020-04-26 15:55:02
【问题描述】:
有没有什么方法可以在不阻塞任何线程(包括后台线程)的情况下在 Java 中进行异步 IO?来自C#,我对async IO的理解是调用的时候就可以了
await ReadAsync()
调用线程(线程池的一部分)进入ReadAsync 函数,在某些时候从操作系统内核调用异步读取函数,然后将自身添加回线程池以获取其他Tasks。读取完成后,线程池会收到通知,另一个线程会获取 Task 的其余部分。
另一方面,在 Java 中,documentation 和 this 的答案似乎表明异步 IO 函数只是由后台线程调用然后阻塞。这似乎性能较差。有什么方法可以在 Java 中实现真正的非阻塞 IO?
【问题讨论】:
-
这个问题需要更多细节。你试过什么?什么不起作用?
-
@HithamS.AlQadheeb 感谢您的链接!我也知道 EA async-await 库。我希望找出是否有办法从标准库中实现这一点,但如果需要,我会检查一下。
-
也可以查看ThreadPoolExecutordocs.oracle.com/javase/7/docs/api/java/util/concurrent/…
标签: java asynchronous io