多執行緒 執行緒同步 非同步

2022-02-02 05:57:27 字數 1693 閱讀 3904

同步和非同步

同步和非同步通常用來形容一次方法的呼叫。同步方法呼叫一旦開始,呼叫者必須完成所有的操作一直到方法呼叫結束,其他呼叫者才能繼續後續的行為,

非同步方法呼叫類似乙個訊息傳遞,一旦開始,方法呼叫就會立即返回,其他呼叫者則可以無需等待,可以立即繼續後續的操作。

非同步:

不過, 如果 我們 趕時髦, 就坐 在家 裡 開啟 電腦, 在 網上 訂購 了 一台 空調。 當你 完成 網上 支付 的 時候, 對 你來 說 購物 過程 已經 結束 了。 雖然 空調 還沒 送 到家, 但是 你的 任務 都已 經 完成 了。 商家 接到 了 你的 訂單 後, 就會 加緊 安排 送貨, 當然 這一 切 已經 跟你 無關 了。 你 已經 支付 完成, 想 幹什麼 就 能去 幹什麼, 出去 溜 幾 圈 都不 成問題, 等 送貨上門 的 時候, 接到 商家 的 **, 回家 一 趟 簽收 就 完事 了。 這就 是 非同步 呼叫。

public

class

mythread3

catch

(interruptedexception e)

}private

void

metho2()

public

static

void

main(string agrs)

}, "t1");

thread b = new thread(new

runnable()

}, "t2");

a.start();

b.start();}}

執行結果:

同步:打個 比方, 比如 我們 去 購物, 如果 你去 商場 實體 店 買 一台 空調, 當你 到了 商場 看 中了 一 款 空調, 你就 想 售貨員 下單。 售貨員 去 倉庫 幫你 調配 物品。 這 天 你 熱得 實在 不行了, 就 催 著 商家 趕緊 給你 送貨, 於是 你就 等在 商 店裡, 候 著 他們, 直到 商家 把你 和 空調 一起 送 回家, 一次 愉快 的 購物 就 結束 了。 這就是 同步 呼叫。

/**

* 同步:synchronized

* 同步的概念就是共享,如果不是共享資源則沒必要進行同步;同步的目的是為了執行緒安全,執行緒安全只需要滿足該特性:原子性(同步)、可見性

*/private

synchronized

void

metho2()

執行結果:等待了2秒鐘

1.a執行緒先獲取了t物件的鎖,b執行緒可以非同步訪問t物件的方法 metho2() 無 synchronized 修飾的方法。

2.a執行緒獲取了t物件的鎖,b執行緒爭取去那t物件的鎖,這個時候物件使用同步 synchronized 修飾了metho2() 方法,a執行緒休眠了2秒,metho2() 方法的鎖還麼有釋放,2秒後,鎖被釋放了,a物件的操作全部結束;b執行緒這個時候才真正的拿到了t物件的鎖,去呼叫metho2() 方法。

同步 非同步 多執行緒

1 首先明確一點,對於單核cpu,任意乙個時刻只有乙個執行緒在執行。那麼既然這樣,多執行緒還有什麼意義呢?舉例來說,現在只有乙個人,要做好幾個任務。單執行緒就是,任務乙個乙個地做,必須做完乙個任務後,再去做另乙個任務。多執行緒就是一會做這個任務,一會做那個任務,每個任務做一會,不停的切換。顯然,最後...

同步 非同步 多執行緒

1 首先明確一點,對於單核cpu,任意乙個時刻只有乙個執行緒在執行。那麼既然這樣,多執行緒還有什麼意義呢?舉例來說,現在只有乙個人,要做好幾個任務。單執行緒就是,任務乙個乙個地做,必須做完乙個任務後,再去做另乙個任務。多執行緒就是一會做這個任務,一會做那個任務,每個任務做一會,不停的切換。顯然,最後...

同步 非同步 多執行緒 解釋

1 首先明確一點,對於單核cpu,任意乙個時刻只有乙個執行緒在執行。那麼既然這樣,多執行緒還有什麼意義呢?舉例來說,現在只有乙個人,要做好幾個任務。單執行緒就是,任務乙個乙個地做,必須做完乙個任務後,再去做另乙個任務。多執行緒就是一會做這個任務,一會做那個任務,每個任務做一會,不停的切換。顯然,最後...