在消息通信中,经常会把同步/异步/阻塞/非阻塞等概念混淆,在此查找资料,并进行总结。
同步/异步
有A、B两个线程进行通信
同步:A向B发送消息后,B在处理消息的过程中,线程A一直处于主动等待B的消息的状态(不执行其他操作--阻塞,定期发送查询信息--非阻塞),B处理完消息后,A主动得到B的结果,此时A和B之间处于同步模式;
异步:A向B发送消息后,A不主动等待B的消息(继续执行其他操作--非阻塞,不执行--阻塞),B处理消息后,将处理结果返回给A,
此时A和B之间处于异步模式;
注意:同步/异步是指线程之间,与线程等待消息时的状态有关。
阻塞:A向B发送消息后,A处于等待状态不进行其他操作,此时A为阻塞调用;
非阻塞:A向B发送消息后,A在处于等待的同时继续执行其他操作,