## 同步 異步
同步和異步關(guān)注的是消息通信機(jī)制(synchronous communication/ asynchronous communication)
參考java編程思想 中 消息的定義,調(diào)用方法液荸,理解為發(fā)送消息艘款。
消息通信機(jī)制将宪,即調(diào)用效果伍派。
例子參考知乎:
所謂同步,就是在發(fā)出一個*調(diào)用*時募寨,在沒有得到結(jié)果之前赡茸,該*調(diào)用*就不返回。但是一旦調(diào)用返回悬垃,就得到返回值了游昼。換句話說,就是由*調(diào)用者*主動等待這個*調(diào)用*的結(jié)果尝蠕。而異步則是相反烘豌,*調(diào)用*在發(fā)出之后,這個調(diào)用就直接返回了看彼,所以沒有返回結(jié)果廊佩。換句話說,當(dāng)一個異步過程調(diào)用發(fā)出后靖榕,調(diào)用者不會立刻得到結(jié)果标锄。而是在*調(diào)用*發(fā)出后,*被調(diào)用者*通過狀態(tài)茁计、通知來通知調(diào)用者料皇,或通過回調(diào)函數(shù)處理這個調(diào)用。
你打電話問書店老板有沒有《分布式系統(tǒng)》這本書簸淀,如果是同步通信機(jī)制瓶蝴,書店老板會說,你稍等租幕,”我查一下"舷手,然后開始查啊查,等查好了(可能是5秒劲绪,也可能是一天)告訴你結(jié)果(返回結(jié)果)男窟。
而異步通信機(jī)制,書店老板直接告訴你我查一下啊贾富,查好了打電話給你歉眷,然后直接掛電話了(不返回結(jié)果)。然后查好了颤枪,他會主動打電話給你汗捡。在這里老板通過“回電”這種方式來回調(diào)。
作者:嚴(yán)肅
鏈接:https://www.zhihu.com/question/19732473/answer/20851256
來源:知乎
##阻塞非阻塞
關(guān)注通信線程狀態(tài)
阻塞和非阻塞關(guān)注的是程序在等待調(diào)用結(jié)果(消息畏纲,返回值)時的狀態(tài).
阻塞調(diào)用是指調(diào)用結(jié)果返回之前扇住,當(dāng)前線程會被掛起春缕。調(diào)用線程只有在得到結(jié)果之后才會返回。
非阻塞調(diào)用指在不能立刻得到結(jié)果之前艘蹋,該調(diào)用不會阻塞當(dāng)前線程锄贼。
還是上面的例子,
你打電話問書店老板有沒有《分布式系統(tǒng)》這本書女阀,你如果是阻塞式調(diào)用宅荤,你會一直把自己“掛起”,直到得到這本書有沒有的結(jié)果浸策,如果是非阻塞式調(diào)用冯键,你不管老板有沒有告訴你,你自己先一邊去玩了的榛, 當(dāng)然你也要偶爾過幾分鐘check一下老板有沒有返回結(jié)果琼了。
在這里阻塞與非阻塞與是否同步異步無關(guān)。跟老板通過什么方式回答你結(jié)果無關(guān)夫晌。
作者:嚴(yán)肅
鏈接:https://www.zhihu.com/question/19732473/answer/20851256
##并發(fā) 并行
并發(fā) We use the term concurrency to refer to the general coqcept of a system with multiple, simultaneous activities,?
并行 and the term parallelism to refer to the use of concurrency to make a system run faster.? ? computer system。
并發(fā)是實現(xiàn)并行而使程序運行更快的手段昧诱。