我試圖說服自己clojure確實比java更容易併發編程。是Clojure Refs/do-sync只是相當於java的「synchronized」塊嗎?
但我覺得Clojure的參考文獻/做同步幾乎是完全一樣的Java「同步」塊。然後我讀這個線程:Clojure STM (dosync) x Java synchronize block
---我重新啓動一個新的線程,因爲如果我在舊線程評論那裏,響應可能不高,由於年老。
在該線程由米哈爾Marczyk第一評論聲稱,DIFF是Java同步塊使用鎖定而Clojure的使用事務。我認爲這個說法並沒有涉及問題的實質:在底層,事務仍然通過鎖來實現。所以「java使用鎖」不是Clojure更好的原因。
我認爲真正的好處是Clojure交易自動管理鎖,就像數據庫交易一樣。這樣,獲取鎖的順序以及事務處理的順序由事務管理器決定,以便程序員不需要關心它,而在Java世界中,程序員必須明確地選擇使用哪個鎖同步塊,這會導致可能的死鎖。事務管理器可以使用2階段鎖定來避免死鎖。
做上述有意義嗎?
感謝 楊
+1。也加入我自己的答案,因爲這是我的老問題,這個問題已經明確地提出來了,還有一些額外的評論我想提出。 –