我聽說有不同級別的Synchronization.are(如果有的話,請你用一段代碼解釋它們嗎?)謝謝。是否有任何不同級別的同步?
1
A
回答
3
在Java 5之前只有一個:關鍵字。這等待並獲得了參考對象的排他鎖。當應用於某個功能時:
public synchronized void doStuff() { ... }
正在同步的對象是this
。
Java 5增加了很多併發實用程序,其中之一是Lock
對象。這有幾個版本,包括ReadWriteLock
。這是我能想到的唯一可以指出的事情。
的問題在於它相當粗糙。做得很糟糕可能會導致死鎖。 Java 5 utils允許非阻塞鎖獲取,鎖獲取超時和讀/寫鎖支持。
3
你真的需要解釋你的意思是「同步水平」。你談論的區別:
public synchronized void foo()
{
...
}
和
public void foo()
{
synchronized(lock)
{
...
}
}
?或者也許在上面和使用java.util.concurrent.locks的鎖?
如果您可以給您聽到的更多背景,我們可能會更好地幫助您。更重要的是,你想解決什麼問題,你認爲可能需要這些信息?
0
我假設OP指的是多線程中使用的對象的同步,而不是Java中的關鍵字。
這是我的理解,在閱讀Goetz後,我們瞭解了Java中不同級別的同步。
讓我們假設我們有一個對象,我們必須在132個線程中使用這個線程,這個線程持續地,純粹地隨機地使用了100年。
abstract Class ICount {
int i;
String iString;
public void add(int i);
public void sub(int i);
public void synchronized print(){
assert(i == Integer.valueOf(iString));
System.out.println("i"+String.valueof(i)+" == "+iString);
}
}
現在可能會有不同的實現,無論是設計還是粗心,在不同層次上都是線程安全的。
- 線程安全同步實現:保證任何java代碼,不使用反射來使用這個實現來固定對象,永遠不會觸發斷言。
- 並行同步實現:除了保證線程安全外,此實現的作者還嘗試允許在可能的情況下同時執行,並且還避免了鎖(爭用)。
- 線程不安全的同步實現:開發人員至少知道他的類不是線程安全的,並且要求你不要使用這個實現,除非你只有一個線程。
如果這是一個真正的問題,大多數的實際實現落在第四類'同步',這有時是有效的,而不是足以在上述類別之一進行分類的文檔,默認屬於第四類。
相關問題
- 1. :是否需要任何同步?
- 2. 是否有任何設計模式的配置同步
- 3. 如何檢查AWS S3同步是否有任何更改?
- 4. gzip的不同壓縮級別有何不同?
- 5. Laravel日誌級別,有何不同?
- 6. 不同組級別
- 7. 行級別不同
- 8. 不同Appendors的不同級別
- 9. 是否有任何工具幫助與TFS同步目錄?
- 10. WCF同步呼叫是否有任何限制Tcp/ip
- 11. Silverlight:HtmlPage.Window.Invoke()是否同步?
- 12. @ModelAttribute是否同步?
- 13. connectionWithRequest是否同步?
- 14. LayoutInflater.inflate()是否同步?
- 15. clEnqueueNDRangeKernel是否同步?
- 16. System.Net.Mail.SmtpClient.Send是否同步?
- 17. UISlider具有不同的分割級別
- 18. 是否有任何`itemgetter`等同於`numpy.ndarray`?
- 19. django是否具有與Rails相同的代碼生成級別?
- 20. 塊級同步
- 21. 塊級同步
- 22. 添加庫後級別同步失敗
- 23. CUDA線程和塊級別同步
- 24. JSR303:是否有可能具有不同的驗證/消息級別?
- 25. jQuery.remove()是否真的同步?
- 26. 具有相同GMT偏移量的時區是否有任何不同?
- 27. 有任何同步服務庫的iPhone
- 28. C#鎖vs Java同步 - 運行時是否有區別?
- 29. 如何使用不同的線級別的不同功能
- 30. 同一級標題,但不同類別
只是有些地方寫有一些同步的水平,我不知道這是什麼意思?而且我已經從我的老師那裏聽到了一些,他只是有一個點它,他說那些什麼各級[:-(] – Johanna 2010-01-20 06:52:25
@Johanna - ?在哪裏「的地方」其實,我懷疑你是困惑和你的老師說的是完全不同的東西無論如何,你應該問的第一個人是你的老師?還是有人其他誰去講座。 – 2010-01-20 07:08:23