同步,Synchronous,即調用方法開始,一旦調用就必須等待方法執行完傳回才能繼續下面的操作。
舉個例子,你去銀行ATM取錢,你必須等到ATM吐完錢你拿到錢取完卡你才能離開。
異步,Asynchronous,即不關心方法執行的過程,觸發要調用的方法就繼續執行下面的操作,不會像同步那樣阻塞直要到方法完成才繼續。
舉個例子,你這次要取錢,數量較大,你直接電話或者APP預約銀行說你要取多少萬現金,這段時間銀行會為你準備錢,而這與你都沒什麼關系,然後你隻要按預定的時候去取就行了,對你于而言,你們是觸發了一個異步動作而已。
并發和并行
并發,Concurrency,即一段時間内多個任務在執行,但不一定是同時在執行,它們可能是交替在運作,也有可能是串行運作的。
并行,Parallelism,這個就是多個任務在同時執行,可以了解為并發裡面有一部分任務在并行執行。
單核CPU不會有并行操作,應為一個CPU一次隻能執行一條指令,并行操作隻存在于多核CPU中。
阻塞和非阻塞
阻塞,Blocking,如果一個線程占用了一個公共資源而沒有釋放對它的鎖,另外别的一些線程想要繼續執行就隻能等它釋放鎖,這時候就造成阻塞了。
非阻塞,Non-Blocking,就是沒有阻塞,線程可以自由運作,沒有鎖定公共資源,不互相阻塞運作。
推薦去我的部落格閱讀更多:
1.Java JVM、集合、多線程、新特性系列教程
2.Spring MVC、Spring Boot、Spring Cloud 系列教程
3.Maven、Git、Eclipse、Intellij IDEA 系列工具教程
4.Java、後端、架構、阿裡巴巴等大廠最新面試題
覺得不錯,别忘了點贊+轉發哦!