整个Java IO体系都是基于字符流(InputStream/OutputStream) 和 字节流(Reader/Writer)做为基类,根据不一样的数据载体或功能派生出来的。异步
同步和异步关注的是通信方式。ide
同步:须要等全部操做完成后,返回结果。
异步:不须要等全部操做完成,返回结果。文档
阻塞与非阻塞关注的是等待状态。get
例子1:电水壶烧水同步
同步阻塞:水壶烧水,人要一直等在水壶旁边,直到水烧开。
同步非阻塞:水壶烧水,人去作其余事,时不时过来看看,水烧没烧开,直到水烧开。
异步阻塞:水壶有烧水报警、自动断电功能,人打开烧水开关后,仍是等在水壶旁边,等水烧开(虽然不必)。
异步非阻塞:水壶有烧水报警、自动断电功能,人打开烧水开关后,去干其余事,不用一直等水壶烧开。it
例子2:家电商场买电视电商
同步阻塞:买电视,坐在商场干等着,等商家包装电视,本身带回去。
异步非阻塞:买电视,下订单,下完电视订单订单,付完款,去干其余事,直到快递上门送货。数据
例子3:书店买书video
打电话给书店问有没有《围城》这本书。
同步:打电话给书店老板,老板说你等等,我查一下,而后一直等,直到老板说有没有。
异步:打电话给书店老板,老板说,等我查到了,打电话给你。
阻塞:上述的同步或异步过程,你也一直在等老板的回答。
非阻塞:上述的同步或异步过程,你去干其余事。vi