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

同步和異步

同步,Synchronous,即調用方法開始,一旦調用就必須等待方法執行完返回才能繼續下面的操做。java

舉個例子,你去銀行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、後端、架構、阿里巴巴等大廠最新面試題

以爲不錯,別忘了點贊+轉發哦!

相關文章
相關標籤/搜索