服务器端编程,经常需要构造高性能的网络应用,需要选用高性能的 IO 模型,这也是通关大公司面试必备的知识。
四种主要的 IO 模型
同步阻塞 IO(Blocking IO)
首先,解释一下这里的阻塞与非阻塞: 阻塞 IO,指的是需要内核 IO 操作彻底完成后,才返回到用户空间执行用户的操作。阻塞指的是用户空间程序的执行状态。传统的 IO 模型都是同步阻塞 IO。在 Java 中,默认创建的 socket 都是阻塞的。 其次,解释一下同步与异步: 同步 IO,是一种用户空间与内核空间的 IO 发起方式。同步 IO 是指用户空间的线程是主动发起 IO 请求的一方,内核空间是被动接受方。异步 IO 则反过来,是指系统内核是主动发起 IO 请求的一方,用户空间的线程是被动接受方。
大约 12 分钟