一,同步,異步
他們都是形容一次方法調用,同步方法只有等調用者調用返回後 ,纔可以繼續後續的同步方法。時間比較長,浪費cpu的資源
異步方法,調用者調用後就會立即返回,調用者可以繼續後續的操作,異步方法只是在另外一個線程真實的執行。
舉例:同步方法好比 你去商城實體店買一個電器,那麼你就要等着商品出庫然後一起回家安裝
異步方法 好比你在網上買一個電器,下單後,就可以幹別的事,去處去玩啊之類的,最後會有快遞員替你運來商品,替你安裝。
二,併發(concurrency),並行(parallelism)
兩者都表示有兩個或者多線程一起執行,但是着重點不同。
併發,着重於多個任務交替執行。而多個任務之間可能是串行的,
並行是真正意義的同時執行。
實際上,在單個cpu上多個任務的執行是併發執行的,只有在多個cpu時,多個任務的執行時纔有可能並行。
三,臨界區
表示一種公共資源或者是共享數據,可以被多個線程使用。但每次只有一個線程可以使用。加鎖可以理解爲一種臨界區,
四,阻塞與非阻塞
這時形容多線程之間的相互影響。
比如一個線程佔用臨界資源,那麼其他線程就必須等待,這就是阻塞,一個線程正在讀取一個文件,那麼其他線程也要操作者個文件,那麼其他線程就必須等待。這時其他線程就處於阻塞狀態。
參考:《Java好併發程序設計》