摘要:鎖的種類自動鎖最常用可以給類方法代碼塊加鎖手動鎖,只能鎖代碼塊兒,且需要手動加鎖解鎖,忘記解鎖會造成死鎖輕量級鎖,不會造成線程阻塞,只能修飾變量,且只能保證變量的修改可見性,無法保證原子性解決死鎖的方法盡量使用的方法,設(shè)置超時時間,超時可以
鎖的種類:
synchronize自動鎖(最常用) 可以給類、方法、代碼塊加鎖 lock手動鎖,只能鎖代碼塊兒,且需要手動加鎖解鎖,忘記解鎖會造成死鎖 volatile輕量級鎖,不會造成線程阻塞,只能修飾變量,且只能保證變量的修改可見性,無法保證原子性
解決死鎖的方法:
1)盡量使用tryLock(long timeout, TimeUnit unit)的方法(ReentrantLock、ReentrantReadWriteLock),設(shè)置超時時間,超時可以退出防止死鎖。 2)盡量使用java.util.concurrent(jdk 1.5以上)包的并發(fā)類代替手寫控制并發(fā),比較常用的是ConcurrentHashMap、ConcurrentLinkedQueue、AtomicBoolean等等,實際應(yīng)用中java.util.concurrent.atomic十分有用,簡單方便且效率比使用Lock更高 3)盡量降低鎖的使用粒度,盡量不要幾個功能用同一把鎖 4)盡量減少同步的代碼塊
悲觀鎖與樂觀鎖
悲觀鎖用于線程沖突率高的場景,用提前加鎖保證線程安全 樂觀鎖用于線程沖突率底的場景,用修改前后版本號是否一致保證線程安全
未完待續(xù)
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/74457.html
摘要:導(dǎo)讀閱讀本文需要有足夠的時間,筆者會由淺到深帶你一步一步了解一個資深架構(gòu)師所要掌握的各類知識點,你也可以按照文章中所列的知識體系對比自身,對自己進(jìn)行查漏補缺,覺得本文對你有幫助的話,可以點贊關(guān)注一下。目錄一基礎(chǔ)篇二進(jìn)階篇三高級篇四架構(gòu)篇五擴(kuò) 導(dǎo)讀:閱讀本文需要有足夠的時間,筆者會由淺到深帶你一步一步了解一個資深架構(gòu)師所要掌握的各類知識點,你也可以按照文章中所列的知識體系對比自身,對自己...
摘要:以下為大家整理了阿里巴巴史上最全的面試題,涉及大量面試知識點和相關(guān)試題。的內(nèi)存結(jié)構(gòu),和比例。多線程多線程的幾種實現(xiàn)方式,什么是線程安全。點擊這里有一套答案版的多線程試題。線上系統(tǒng)突然變得異常緩慢,你如何查找問題。 以下為大家整理了阿里巴巴史上最全的 Java 面試題,涉及大量 Java 面試知識點和相關(guān)試題。 JAVA基礎(chǔ) JAVA中的幾種基本數(shù)據(jù)類型是什么,各自占用多少字節(jié)。 S...
閱讀 537·2021-10-19 11:45
閱讀 1346·2021-09-30 09:48
閱讀 1464·2021-08-16 10:56
閱讀 728·2021-07-26 23:38
閱讀 3207·2019-08-30 13:15
閱讀 2589·2019-08-30 12:45
閱讀 1823·2019-08-29 12:14
閱讀 2059·2019-08-26 18:42