Java Synchronised鏈哄埗,javasynchronised
Java Synchronised鏈哄埗,javasynchronised
Java涓攣鐨勬帶鍒跺彲浠ュ弬鐪嬭繖绡囨枃绔?聽Java澶氱嚎绋嬫姠鍗?/a>銆?/p>
I. 鍘熸湯
鐭涚浘1:
A: 閲嶉噺绾ч攣涓殑闃诲(鎸傝捣绾跨▼/鎭㈠绾跨▼): 闇€瑕佽浆鍏ュ唴鏍告€佷腑瀹屾垚锛屾湁寰堝ぇ鐨勬€ц兘褰卞搷銆?/p>
B: 閿佸ぇ澶氭暟鎯呭喌閮芥槸鍦ㄥ緢鐭殑鏃堕棿鎵ц瀹屾垚銆?/p>
瑙e喅鏂规: 寮曞叆杞婚噺閿?閫氳繃鑷棆鏉ュ畬鎴愰攣绔炰簤)銆?/p>
鐭涚浘2:
A: 杞婚噺绾ч攣涓殑鑷棆: 鍗犵敤CPU鏃堕棿锛屽鍔燙PU鐨勬秷鑰?鍥犳鍦ㄥ鏍稿鐞嗗櫒涓婁紭鍔挎洿鏄庢樉)銆?/p>
B: 濡傛灉鏌愰攣濮嬬粓鏄闀挎湡鍗犵敤锛屽鑷磋嚜鏃嬪鏋滄病鏈夋妸鎻″ソ锛岀櫧鐧芥氮璐笴PU璧勬簮銆?/p>
瑙e喅鏂规: JDK5涓紩鍏ラ粯璁よ嚜鏃嬫鏁颁负10(鐢ㄦ埛鍙互閫氳繃-XX:PreBlockSpin
杩涜淇敼)锛?JDK6涓洿鏄紩鍏ヤ簡鑷€傚簲鑷棆锛堢畝鍗曟潵璇村鏋滆嚜鏃嬫垚鍔熸鐜囬珮锛屽氨浼氬厑璁哥瓑寰呮洿闀跨殑鏃堕棿锛堝100娆¤嚜鏃嬶級锛屽鏋滃け璐ョ巼寰堥珮锛岄偅寰堟湁鍙兘灏变笉鍋氳嚜鏃嬶紝鐩存帴鍗囩骇涓洪噸閲忕骇閿侊紝瀹為檯鍦烘櫙涓紝HotSpot璁や负鏈€浣虫椂闂村簲璇ユ槸涓€涓嚎绋嬩笂涓嬫枃鍒囨崲鐨勬椂闂达紝鑰屾槸鍚﹁嚜鏃嬩互鍙婅嚜鏃嬫鏁版洿鏄笌瀵笴PUs鐨勮礋杞姐€丆PUs鏄惁澶勪簬鑺傜數妯″紡绛夋伅鎭浉鍏崇殑)銆?/p>
鐭涚浘3:
A: 鏃犺鏄交閲忕骇閿佽繕鏄噸閲忕骇閿? 鍦ㄨ繘鍏ヤ笌閫€鍑烘椂閮借閫氳繃CAS淇敼瀵硅薄澶翠腑鐨?code>Mark Word鏉ヨ繘琛屽姞閿佷笌閲婃斁閿併€?/p>
B: 鍦ㄤ竴浜涙儏鍐典笅鎬绘槸鍚屼竴绾跨▼澶氭鑾峰緱閿侊紝姝ゆ椂绗簩娆″啀閲嶆柊鍋欳AS淇敼瀵硅薄澶翠腑鐨?code>Mark Word杩欐牱鐨勬搷浣滐紝鏈変簺澶氫綑銆?/p>
瑙e喅鏂规: JDK6寮曞叆鍋忓悜閿?棣栨闇€瑕侀€氳繃CAS淇敼瀵硅薄澶翠腑鐨?code>Mark Word锛屼箣鍚庤绾跨▼鍐嶈繘鍏ュ彧闇€瑕佹瘮杈冨璞″ご涓殑Mark Word
鐨凾hread ID鏄惁涓庡綋鍓嶇殑涓€鑷达紝濡傛灉涓€鑷磋鏄庡凡缁忓彇寰楅攣锛屽氨涓嶇敤鍐岰AS浜?銆?/p>
鐭涚浘4:
A: 椤圭洰涓唬鐮佸潡涓彲鑳界粷澶ф儏鍐典笅閮芥槸澶氱嚎绋嬭闂€?/p>
B: 姣忔閮芥槸鍏堝亸鍚戦攣鐒跺悗杩囨浮鍒拌交閲忛攣锛岃€屽亸鍚戦攣鑳界敤鍒扮殑鍙堝緢灏戙€?/p>
瑙e喅鏂规: 鍙互浣跨敤-XX:-UseBiasedLocking=false
绂佺敤鍋忓悜閿併€?/p>
鐭涚浘5:
A: 浠g爜涓璊DK鍘熺敓鎴栧叾浠栫殑宸ュ叿鏂规硶涓甫鏈夊ぇ閲忕殑鍔犻攣銆?/p>
B: 瀹為檯杩囩▼涓紝寰堟湁鍙兘寰堝鍔犻攣鏄棤鏁堢殑(濡傚眬閮ㄥ彉閲忎綔涓洪攣锛岀敱浜庢瘡娆¢兘鏄柊瀵硅薄鏂伴攣锛屾墍浠ユ病鏈夋剰涔?銆?/p>
瑙e喅鏂规硶: 寮曞叆閿佸墛闄?铏氭嫙鏈哄嵆鏃剁紪璇戝櫒(JIT)杩愯鏃讹紝渚濇嵁閫冮€稿垎鏋愮殑鏁版嵁妫€娴嬪埌涓嶅彲鑳藉瓨鍦ㄧ珵浜夌殑閿侊紝灏辫嚜鍔ㄥ皢璇ラ攣娑堥櫎)銆?/p>
鐭涚浘6:
A: 涓轰簡璁╅攣棰楃矑搴︽洿灏忥紝鎴栬€呭師鐢熸柟娉曚腑甯︽湁閿侊紝寰堟湁鍙兘鍦ㄤ竴涓绻佹墽琛?濡傚惊鐜?涓鍚屼竴瀵硅薄鍔犻攣銆?/p>
B: 鐢变簬鍦ㄩ绻佺殑鎵ц涓紝鍙嶅鐨勫姞閿佸拰瑙i攣锛岃繖绉嶉绻佺殑閿佺珵浜夊甫鏉ュ緢澶х殑鎬ц兘鎹熻€椼€?/p>
瑙e喅鏂规硶: 寮曞叆閿佽啫鑳€(浼氳嚜鍔ㄥ皢閿佺殑鑼冨洿鎷撳睍鍒版搷浣滃簭鍒?濡傚惊鐜?澶? 鍙互鐞嗚В涓哄皢涓€浜涘弽澶嶇殑閿佸悎涓轰竴涓攣鏀惧湪瀹冧滑澶栭儴)銆?/p>
II. 鍩烘湰鍘熺悊
JVM浼氫负姣忎釜瀵硅薄鍒嗛厤涓€涓?code>monitor锛岃€屽悓鏃跺彧鑳芥湁涓€涓嚎绋嬪彲浠ヨ幏寰楄瀵硅薄monitor
鐨勬墍鏈夋潈銆傚湪绾跨▼杩涘叆鏃堕€氳繃monitorenter
灏濊瘯鍙栧緱瀵硅薄monitor
鎵€鏈夋潈锛岄€€鍑烘椂閫氳繃monitorexit
閲婃斁瀵硅薄monitor
鎵€鏈夋潈銆?/p>
monitorenter
涓?code>monitorexit鍦ㄧ紪璇戝悗瀵圭О鎻掑叆浠g爜銆?/p>
monitorenter
: 琚彃鍏ュ埌鍚屾浠g爜鍧椾箣鍓嶃€?/li>monitorexit
: 琚彃鍒板悓姝ヤ唬鐮佸潡涔嬪悗鎴栧紓甯稿銆?/li>
1. 鐩稿叧鏁版嵁瀛樺湪鍝噷?
瀵硅薄澶淬€?/p>
2. 鍚勪釜閿佺殑鍏崇郴浠ュ強鍗囩骇鎯呭喌?
閿佸崌绾ф槸鍗曞悜鐨? 鏃犻攣 -> 鍋忓悜閿?-> 杞婚噺绾ч攣 -> 閲嶉噺绾ч攣
閿佸崌绾ф槸鍗曞悜鐨? 鏃犻攣 -> 鍋忓悜閿?-> 杞婚噺绾ч攣 -> 閲嶉噺绾ч攣
III. 澶氱嚎绋嬩笅鏁版嵁鍚屾
杩欑被閿?鍏抽敭瀛椾富瑕佹槸涓轰簡缁存姢鏁版嵁鍦ㄩ珮骞跺彂鎯呭喌涓嬬殑涓€鑷存€?绋冲畾鎬с€?/p>
1. 鏁版嵁搴撲腑鐨勯攣
鍏变韩閿?Share Lock)
鍙堢О涓鸿閿?/p>
澶氫釜绾跨▼鍙苟鍙戠殑鑾峰緱鏌愪釜鏁版嵁鐨勫叡浜攣閿侊紝骞惰璇诲彇鏁版嵁銆傚湪鏁版嵁瀛樺湪鍏变韩閿佹湡闂达紝涓嶈兘淇敼鏁版嵁锛屼笉鑳藉姞鎺掍粬閿併€?/p>
濡侻ySQL涓紝鍦ㄦ煡璇㈣鍙ユ渶鍚庡姞涓?code>LOCK IN SHARE MODE銆?/p>
鎺掍粬閿?eXclusive Lock)
鍙堢О涓哄啓閿?/p>
鍚岃兘鍙兘鏈変竴涓嚎绋嬪彲浠ヨ幏寰楁煇涓暟鎹殑鎺掍粬閿併€傚湪绾跨▼鑾峰彇鎺掍粬閿佸悗锛岃绾跨▼鍙鏁版嵁璇诲啓锛屼絾鏄叾浠栫嚎绋嬩笉鑳藉璇ユ暟鎹坊鍔犱换浣曢攣銆?/p>
2.聽volatile
濡傛灉涓€涓叡浜彉閲忚澹版槑鎴?code>volatile锛宩ava绾跨▼鍐呭瓨妯″瀷灏嗕細纭繚鎵€鏈夌嚎绋嬬湅鍒拌繖涓彉閲忕殑鍊兼槸涓€鑷寸殑銆?/p>
- 鍩烘湰绛栫暐: 鍐欐搷浣滄椂锛屼細鏈?code>Lock鍓嶇紑鎸囧畾锛屽鐞嗗櫒浼氱珛椹皢淇敼鐩存帴鍐欏洖绯荤粺鍐呭瓨锛屽苟涓斿叾浠栧鐞嗗櫒浼氬皢璇ュ€煎湪鍏朵笂鐨勯珮閫熺紦瀛樻爣涓烘棤鏁堛€?/li>
- 鍙兘甯︽潵鐨勬€ц兘娑堣€?/strong>: 鍐欐搷浣滃疄鏃跺啓鍥炲唴瀛橈紝閿佹€荤嚎/閿佸唴瀛樸€?/li>
- 浼樺娍: 涓€浜涘満鏅笂鐩告瘮
synchronized
锛屾墽琛屾垚鏈洿浣?涓嶄細寮曡捣绾跨▼涓婁笅鏂囧垏鎹互鍙婅皟搴?锛屼娇鐢ㄦ洿鏂逛究銆?/li> - 浼樺娍: 涓€浜涘満鏅笂鐩告瘮
相关文章
- 暂无相关文章
用户点评