天天看點

學習java多線程,這必須搞懂的這幾個概念,很重要。

同步,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、後端、架構、阿裡巴巴等大廠最新面試題

覺得不錯,别忘了點贊+轉發哦!

繼續閱讀