同步和异步都是基于应用程序和操作系统处理 IO事件所采用的方式。比如同步:是应用程序要直接参与 IO读写的操作。异步:所有的 IO读写交给操作系统去处理,应用程序只需要等待通知。
同步方式在处理 IO事件的时候,必须阻塞在某个方法上面等待我们的 IO事件完成(阻塞 IO事件或者通过轮询 IO事件的方式),对于异步来说,所有的 IO读写都交给了操作系统。这个时候,我们可以去做其他的事情,并不需要去完成真正的 IO操作,当操作完成 IO后,会给我们的应用程序一个通知。
同步 :阻塞到 IO事件,阻塞到 read或则 write。这个时候我们就完全不能做自己的事情。让读写方法加入到线程里面,然后阻塞线程来实现,对线程的性能开销比较大。