有人可以解釋Java中各種同步方法之間的各種差異嗎?Java中各種線程同步選項之間的區別是什麼?
- Syncornized塊(像監視器?)
- 鎖具 - 爪哇併發lock.lock()/ lock.unlock()
- 信號燈..?
- 的Object.wait()& Object.notify()(如互斥?)
- 其他類
所以我真的想知道有哪些不同的Java同步選項常用的,他們是如何映射到「傳統」/理論互斥鎖,信號量,鎖和監視器。
乾杯!
有人可以解釋Java中各種同步方法之間的各種差異嗎?Java中各種線程同步選項之間的區別是什麼?
所以我真的想知道有哪些不同的Java同步選項常用的,他們是如何映射到「傳統」/理論互斥鎖,信號量,鎖和監視器。
乾杯!
我給每一個簡短的澄清:
tryLock
這樣的操作,如果該鎖只有在空閒時纔會嘗試鎖定,否則將立即返回。鎖需要明確解鎖。wait/notify
大致等價於條件變量的概念。同樣,它們必須受同步塊的保護,並且只有當用作監視器的對象上保持鎖定時才能正確地工作。Java對線程和同步提供本機支持。本地(或低級別)同步線程的方式是使用同步塊和方法(==關鍵部分),wait()
和notify()
。
這種技術可以讓你做你想做的一切,但不幸的是,這種方式有時相當冗長。 Doug Lea最初在Apache項目下開發了併發包。然後這個包被Sun Microsystems採用。這個包提供了更方便的API。
就拿這篇文章一看就瞭解詳情:http://docs.oracle.com/javase/tutorial/essential/concurrency/
[已在很多地方解釋過](http://www.google.com/search?q=java+concurrency+tutorial)。請花些時間完成一些現有的教程,然後回來,如果你有一個具體的,更集中的問題。 – 2012-04-17 08:21:03
我建議你閱讀[Java Concurrency in Practice](http://jcip.net/)。這是一本很棒的書,尤其是因爲你對java多線程感興趣。 – 2012-04-17 08:31:28
貨幣教程通常關注Java併發的一個方面。真的,我認爲將有用的是一個位置的各種選項及其優點/缺點和用例的總結。好的wiki的候選人。 – NightWolf 2012-04-17 08:40:37