我是新來的併發編程。當我正在瀏覽同步,線程安全集合,原子包裝類,鎖之間的混淆時, 鎖和同步通過使一段代碼線程安全來完成相同的工作。爲什麼我們需要線程安全的集合或原子包裝類呢?由於鎖定將只允許單個線程訪問代碼,並且不會讓集合或基元類型變得不安全。同步vs線程安全集合vs原子包裝類vs鎖
0
A
回答
2
這是一個非常廣泛的問題,你問。問題是,並非所有這些東西都有單一嚴格的定義。例如,線程安全集合可能使用各種形式的同步(如鎖或原子操作)來實現線程安全。但是,甚至連「線程安全」這個術語都沒有明確定義!
然而,有一件事你錯了肯定:同步是我們的目標,而鎖,互斥體,原子能等都是手段來實現這一目標。同步意味着不同的線程以同步的方式訪問資源。換句話說,他們協調訪問,以便它們不會互相影響。順便說一句:我在這裏談論線程,但不同的實體也可能是進程或甚至不同的計算機,但讓我們先保持簡單。
現在,你問使用「線程安全的集合或原子包裝類」,爲什麼他們都需要在所有。答案很簡單,這些東西在更高的層次上提供了不同的接口或服務。例如,當我有一個連接兩個線程的FIFO時,它們如何同步對底層隊列的訪問並不重要。如果兩個線程的接口已正確實現,則可以獲得一定的保證。用鎖來手動執行操作是可能的,但是很複雜,因此除了低級原語之外,將它們提供爲高級構建塊只會使軟件開發更容易,結果更可靠。
最後一個提醒的其他問題:如開頭所提到的,並不是所有的條款都與他們相關的普遍意義。因此,如果您提供了其他信息,特別是您打算使用的編程語言,它將有所幫助。
2
因爲使用同步時需要小心。如果你濫用它,你可能會遇到性能問題。如果可能,使用線程安全集合通常對性能更好,並確保沒有錯誤或死鎖。
相關問題
- 1. 同步vs鎖vs同步映射
- 2. 線程vs同步
- 3. 線程vs begininvoke vs異步
- 4. 線程同步VS進程同步
- 5. 異步EF 6 vs包裝同步EF
- 6. 線程安全VS異步信號安全
- 7. 安裝VS 2008和VS 2010
- 8. Raw數組vs vs集合
- 9. decaf線程vs boost線程vs全線程
- 10. 不變性VS線程安全
- 11. 線程安全控制 - 崩潰VS 2008
- 12. Java線程:爭用條件vs同步
- 13. 性能:異步vs線程
- 14. 安裝VS 2008
- 15. 安裝VS Ultimate後卸載VS Express是否安全?
- 16. VS項目的安裝程序包
- 17. 有線程對象鎖VS級鎖
- 18. j_security_check vs程序安全
- 19. Java同步vs死鎖示例
- 20. 任務並行庫vs原生線程同步
- 21. MSI安裝程序VS 2008
- 22. 同步vs ReentrantLock vs AtomicInteger執行時間
- 23. 束VS捆紮機/捆束VS安裝
- 24. 同步VS在Tensorflow
- 25. 的ReentrantReadWriteLock VS同步
- 26. VS 2017安裝庫
- 27. VS 2005安裝 - HKCU
- 28. VS安裝問題
- 29. NSIS Vs的維克斯Vs的任何其它的安裝包
- 30. 進程vs線程(用戶vs內核)
謝謝@Ulrich ..語言是java ...的解釋是非常好的和描述性的 –