同步與非同步 併發和並行 阻塞和非阻塞

2022-05-08 04:09:12 字數 798 閱讀 2066

同步和非同步

同步和非同步通常用來形容一次方法的呼叫。同步方法的呼叫必須等到該方法返回後才能繼續接下來的行為。非同步方法更像乙個訊息傳遞,一旦呼叫就會立即返回,呼叫者可以繼續接下來的操作,而非同步方法通常會在另乙個執行緒中執行,不會妨礙呼叫者的工作。

1

public

class

syncdemo

1314

//洗衣服方法

15public

static

void

washclothes() catch

(interruptedexception e)

22 system.out.println("衣服洗完了");23}

2425

//看電視方法

26public

static

void

watchtv()

29 }

併發和並行

併發和並行都可以表示多個任務一起執行,但是側重點不同。併發偏重於多個任務交替執行,而多個任務有可能還是序列的,而並行是真正意義上的「同時執行」。如果系統只有乙個cpu,而使用多執行緒任務,那麼這些任務是不可能並行的,乙個cpu一次只能執行一條命令,在這種情況下多執行緒就是併發的,而不是並行的。只有多個cpu的系統才會出現並行。

阻塞和非阻塞

阻塞和非阻塞是形容多執行緒間的相互影響。比如乙個執行緒占用了臨界區的資源,那麼其他執行緒需要這個資源的執行緒就只能等待,等待會導致執行緒掛起,這就是阻塞。非阻塞就是與之相反,它強調沒有乙個執行緒可以妨礙其他執行緒執行,所有的執行緒都會嘗試不斷向前執行。

同步非同步?阻塞非阻塞?併發並行?

阻塞呼叫是指呼叫結果返回之前,呼叫者會進入阻塞狀態等待。只有在得到結果之後才會返回。非阻塞呼叫是指在不能立刻得到結果之前,該函式不會阻塞當前執行緒,而會立刻返回。同步 在發出乙個同步呼叫時,在沒有得到結果之前,該呼叫就不返回。非同步 在發出乙個非同步呼叫後,呼叫者不會立刻得到結果,該呼叫就返回了。同...

併發 並行,阻塞 非阻塞,同步 非同步

1.阻塞,非阻塞 乙個執行緒 程序經歷的5個狀態,建立,就緒,執行,阻塞,終止。各個狀態的轉換條件如上圖,其中有個阻塞狀態,就是說當執行緒中呼叫某個函式,需要io請求,或者暫時得不到競爭資源的,作業系統會把該執行緒阻塞起來,避免浪費cpu資源,等到得到了資源,再變成就緒狀態,等待cpu排程執行。定義...

同步 非同步 阻塞 非阻塞 併發 並行

同步和非同步關注的是訊息通訊機制 synchronous communication asynchronous communication 所謂同步,就是在發出乙個呼叫時,在沒有得到結果之前,該呼叫就不返回。但是一旦呼叫返回,就得到返回值了。換句話說,就是由呼叫者主動等待這個呼叫的結果。而非同步則是...