同步与异步
同步与异步主要描述在单线程中,执行者是否具备主动通知功能:
同步: 调用者会等到方法调用返回后才能继续后面的行为
异步: 调用者不需要等到方法返回,方法执行完毕后会主动通知调用者
阻塞与非阻塞
阻塞与非阻塞主要关心调用者的多个线程是否可以同时执行
阻塞: 线程1和线程2不能同时进行
非阻塞: 线程1和线程2可以同时进行
示例
同步阻塞
小明把水壶放到火上,然后在那傻等水开
(客户端请求服务器,在服务器返回前,客户端不执行任何操作)
同步非阻塞
小明把水壶放到火上,然后去客厅看电视,时不时的去厨房看看水开没有
(客户端新开一个线程请求服务器,主线程执行其他操作,同时主线程对请求结果进行轮询,发现收到请求结果后,执行后续操作)
异步阻塞
小明把响水壶放到火上,然后在那傻等水开
(客户端请求服务器,在服务器返回前,客户端不执行任何操作,服务器返回时,通过回调通知客户端执行后续操作)
异步非阻塞
小明把响水水壶放到火上,去客厅看电视,水壶响之前不再去看它了,响了再去处理
(客户端新开一个线程请求服务器,主线程执行其他操作,服务器返回时,调用回调客户端的回调接口通知主线程执行特定操作)