同步和非同步
同步和非同步通常用來形容一次方法的呼叫。同步方法呼叫一旦開始,呼叫者必須完成所有的操作一直到方法呼叫結束,其他呼叫者才能繼續後續的行為,
非同步方法呼叫類似乙個訊息傳遞,一旦開始,方法呼叫就會立即返回,其他呼叫者則可以無需等待,可以立即繼續後續的操作。
非同步:
不過, 如果 我們 趕時髦, 就坐 在家 裡 開啟 電腦, 在 網上 訂購 了 一台 空調。 當你 完成 網上 支付 的 時候, 對 你來 說 購物 過程 已經 結束 了。 雖然 空調 還沒 送 到家, 但是 你的 任務 都已 經 完成 了。 商家 接到 了 你的 訂單 後, 就會 加緊 安排 送貨, 當然 這一 切 已經 跟你 無關 了。 你 已經 支付 完成, 想 幹什麼 就 能去 幹什麼, 出去 溜 幾 圈 都不 成問題, 等 送貨上門 的 時候, 接到 商家 的 **, 回家 一 趟 簽收 就 完事 了。 這就 是 非同步 呼叫。
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();}}
/**執行結果:等待了2秒鐘 1.a執行緒先獲取了t物件的鎖,b執行緒可以非同步訪問t物件的方法 metho2() 無 synchronized 修飾的方法。* 同步:synchronized
* 同步的概念就是共享,如果不是共享資源則沒必要進行同步;同步的目的是為了執行緒安全,執行緒安全只需要滿足該特性:原子性(同步)、可見性
*/private
synchronized
void
metho2()
2.a執行緒獲取了t物件的鎖,b執行緒爭取去那t物件的鎖,這個時候物件使用同步 synchronized 修飾了metho2() 方法,a執行緒休眠了2秒,metho2() 方法的鎖還麼有釋放,2秒後,鎖被釋放了,a物件的操作全部結束;b執行緒這個時候才真正的拿到了t物件的鎖,去呼叫metho2() 方法。
同步 非同步 多執行緒
1 首先明確一點,對於單核cpu,任意乙個時刻只有乙個執行緒在執行。那麼既然這樣,多執行緒還有什麼意義呢?舉例來說,現在只有乙個人,要做好幾個任務。單執行緒就是,任務乙個乙個地做,必須做完乙個任務後,再去做另乙個任務。多執行緒就是一會做這個任務,一會做那個任務,每個任務做一會,不停的切換。顯然,最後...
同步 非同步 多執行緒
1 首先明確一點,對於單核cpu,任意乙個時刻只有乙個執行緒在執行。那麼既然這樣,多執行緒還有什麼意義呢?舉例來說,現在只有乙個人,要做好幾個任務。單執行緒就是,任務乙個乙個地做,必須做完乙個任務後,再去做另乙個任務。多執行緒就是一會做這個任務,一會做那個任務,每個任務做一會,不停的切換。顯然,最後...
同步 非同步 多執行緒 解釋
1 首先明確一點,對於單核cpu,任意乙個時刻只有乙個執行緒在執行。那麼既然這樣,多執行緒還有什麼意義呢?舉例來說,現在只有乙個人,要做好幾個任務。單執行緒就是,任務乙個乙個地做,必須做完乙個任務後,再去做另乙個任務。多執行緒就是一會做這個任務,一會做那個任務,每個任務做一會,不停的切換。顯然,最後...