I/O(Input/Outpu) 即输入/输出 。
学术的说 I/O 是信息处理系统(计算机)与外界(人或信息处理系统)间的通信。如计算机,即 CPU 访问任何寄存器和 Cache 等封装以外的数据资源都可当成 I/O ,包括且不限于内存,磁盘,显卡。
软件开发中的 I/O 则常指磁盘、网络 IO。
同步、异步是消息通知机制。
同步和异步的区别最大在于异步的话调用者不需要等待处理结果,被调用者会通过回调等机制来通知调用者其返回结果。
阻塞、非阻塞是等待通知时的状态。
举个生活中简单的例子:
你妈妈让你烧水,小时候你比较笨啊,在哪里傻等着水开( 同步阻塞 )。等你稍微再长大一点,你知道每次烧水的空隙可以去干点其他事,然后只需要时不时来看看水开了没有( 同步非阻塞 )。后来,你们家用上了水开了会发出声音的壶,这样你就只需要听到响声后就知道水开了,在这期间你可以随便干自己的事情( 异步非阻塞 )。
Java 的 I/O 大概可以分成以下几类: