共计 865 个字符,预计需要花费 3 分钟才能阅读完成。
Java 中的 BIO、NIO 和 AIO 了解为是 Java 语言对操作系统的各种 IO 模型的封装。程序员在应用这些 API 的时候,不须要关怀操作系统层面的常识,也不须要依据不同操作系统编写不同的代码。只须要应用 Java 的 API 就能够了。
在讲 BIO,NIO,AIO 之前先来回顾一下这样几个概念:同步与异步,阻塞与非阻塞。
对于同步和异步的概念解读困扰着很多程序员,大部分的解读都会带有本人的一点偏见。参考了 Stackoverflow 相干问题后对原有答案进行了进一步欠缺:
When you execute something synchronously, you wait for it to finish before moving on to another task. When you execute something asynchronously, you can move on to another task before it finishes.
当你同步执行某项工作时,你须要期待其实现能力继续执行其余工作。当你异步执行某些操作时,你能够在实现另一个工作之前持续进行。
同步和异步
同步:两个同步工作相互依赖,并且一个工作必须以依赖于另一工作的某种形式执行。
比方在 A ->B 事件模型中,你须要先实现 A 能力执行 B。再换句话说,同步调用中被调用者未解决完申请之前,调用不返回,调用者会始终期待后果的返回。
异步:两个异步的工作是齐全独立的,一方的执行不须要期待另外一方的执行。再换句话说,异步调用中一调用就返回后果不须要期待后果返回,当后果返回的时候通过回调函数或者其余形式拿着后果再做相干事件,
阻塞和非阻塞
阻塞:阻塞就是发动一个申请,调用者始终期待申请后果返回,也就是以后线程会被挂起,无奈从事其余工作,只有当条件就绪能力持续。
非阻塞:非阻塞就是发动一个申请,调用者不必始终等着后果返回,能够先去干其余事件。
如何辨别“同步 / 异步”和“阻塞 / 非阻塞”呢?
同步 / 异步是从行为角度形容事物的,而阻塞和非阻塞形容的以后事物的状态(期待调用后果时的状态)。
本文由博客群发一文多发等经营工具平台 OpenWrite 公布