锘??xml version="1.0" encoding="utf-8" standalone="yes"?>免费亚洲婷婷,亚洲人成人一区二区三区,国产成人超碰人人澡人人澡http://www.aygfsteel.com/abin/category/52780.htmlzh-cnFri, 19 Oct 2012 22:45:41 GMTFri, 19 Oct 2012 22:45:41 GMT60java涓殑volatile鍜宻ynchronizedhttp://www.aygfsteel.com/abin/archive/2012/10/19/389867.htmlabingabingFri, 19 Oct 2012 05:36:00 GMThttp://www.aygfsteel.com/abin/archive/2012/10/19/389867.htmlhttp://www.aygfsteel.com/abin/comments/389867.htmlhttp://www.aygfsteel.com/abin/archive/2012/10/19/389867.html#Feedback0http://www.aygfsteel.com/abin/comments/commentRss/389867.htmlhttp://www.aygfsteel.com/abin/services/trackbacks/389867.html榪欎釜鍙兘鏄渶濂界殑瀵規瘮volatile 鍜宻ynchronized 浣滅敤鐨勬枃绔犱簡銆倂olatile 鏄竴涓彉閲忎慨楗扮錛岃€宻ynchronized 鏄竴涓柟娉曟垨鍧楃殑淇グ絎︺€傛墍浠ユ垜浠嬌鐢ㄨ繖涓ょ鍏抽敭瀛楁潵鎸囧畾涓夌綆€鍗曠殑瀛樺彇鍙橀噺鐨勬柟寮忋€?/span>

         int i1;                       int geti1() {return i1;}

volatile int i2;                        int geti2() {return i2;}

     int i3;          synchronized int geti3() {return i3;}

geti1() 鍦?strong>褰撳墠綰跨▼ 涓珛鍗寵幏鍙栧湪i1 鍙橀噺涓殑鍊箋€傜嚎紼嬪彲浠ヨ幏寰楀彉閲忕殑鏈湴鎷瘋礉錛岃€屾墍鑾峰緱鐨勫彉閲忕殑鍊煎茍涓嶄竴瀹氫笌鍏朵粬綰跨▼鎵€鑾峰緱鐨勫€肩浉鍚屻€傜壒鍒槸錛屽鏋滃叾浠栫殑綰跨▼淇敼浜唅1 鐨勫€鹼紝閭d箞褰撳墠綰跨▼鑾峰緱鐨刬1 鐨勫€煎彲鑳戒笌淇敼鍚庣殑鍊兼湁鎵€宸埆銆傚疄闄呬笂錛孞ava 鏈変竴縐嶄富鍐呭瓨鐨勬満鍒訛紝浣跨敤涓€涓富鍐呭瓨鏉ヤ繚瀛樺彉閲忓綋鍓嶇殑姝g‘鐨勫€箋€傜嚎紼嬪皢鍙橀噺鐨勫€兼嫹璐濆埌鑷繁鐙珛鐨勫唴瀛樹腑錛岃€岃繖浜涚嚎紼嬬殑鍐呭瓨鎷瘋礉鍙兘涓庝富鍐呭瓨涓殑鍊間笉鍚屻€傛墍浠ュ疄闄呭綋涓彲鑳藉彂鐢熻繖鏍風殑鎯呭喌錛屽湪涓誨唴瀛樹腑i1 鐨勫€間負1 錛岀嚎紼? 鍜岀嚎紼? 閮芥洿鏀逛簡i1 錛屼絾鏄嵈娌℃妸鏇存柊鐨勫€間紶鍥炵粰涓誨唴瀛樻垨鍏朵粬綰跨▼涓紝閭d箞鍙兘鍦ㄧ嚎紼? 涓璱1 鐨勫€間負2錛岀嚎紼? 涓璱1 鐨勫€煎嵈涓?nbsp;3 銆?/span>

鍙︿竴鏂歸潰錛実eti2() 鍙互鏈夋晥鐨勪粠涓誨唴瀛樹腑鑾峰彇i2 鐨勫€箋€備竴涓獀olatile 綾誨瀷鐨勫彉閲忎笉鍏佽綰跨▼浠庝富鍐呭瓨涓皢鍙橀噺鐨勫€兼嫹璐濆埌鑷繁鐨勫瓨鍌ㄧ┖闂淬€傚洜姝わ紝涓€涓0鏄庝負volatile 綾誨瀷鐨勫彉閲忓皢鍦ㄦ墍鏈夌殑綰跨▼涓悓姝ョ殑鑾峰緱鏁版嵁錛屼笉璁轟綘鍦ㄤ換浣曠嚎紼嬩腑鏇存敼浜嗗彉閲忥紝鍏朵粬鐨勭嚎紼嬪皢绔嬪嵆寰楀埌鍚屾牱鐨勭粨鏋溿€傜敱浜庣嚎紼嬪瓨鍙栨垨鏇存敼鑷繁鐨勬暟鎹嫹璐濇湁鏇撮珮鐨勬晥鐜囷紝鎵€浠olatile 綾誨瀷鍙橀噺鍦ㄦ€ц兘涓婃湁鎵€娑堣€椼€?/span>

閭d箞濡傛灉volatile 鍙橀噺宸茬粡鍙互浣挎暟鎹湪綰跨▼闂村悓姝ワ紝閭d箞synchronizes 鐢ㄦ潵騫蹭粈涔堝憿錛熶袱鑰呮湁涓ゆ柟闈㈢殑涓嶅悓銆傞鍏堬紝synchronized 鑾峰彇鍜岄噴鏀劇敱鐩戝惉鍣ㄦ帶鍒剁殑閿侊紝濡傛灉涓や釜綰跨▼閮戒嬌鐢ㄤ竴涓洃鍚櫒( 鍗崇浉鍚屽璞¢攣) 錛岄偅涔堢洃鍚櫒鍙互寮哄埗鍦ㄤ竴涓椂鍒誨彧鏈変竴涓嚎紼嬭兘澶勭悊浠g爜鍧楋紝榪欐槸鏈€涓€鑸殑鍚屾銆傚彟澶栵紝synchronized 榪樿兘浣垮唴瀛樺悓姝ャ€傚湪瀹為檯褰撲腑錛宻ynchronized 浣垮緱鎵€鏈夌殑綰跨▼鍐呭瓨涓庝富鍐呭瓨鐩稿悓姝ャ€傛墍浠eti3() 鐨勬墽琛岃繃紼嬪涓嬶細

1.    綰跨▼浠庣洃鍚櫒鑾峰彇瀵硅薄鐨勯攣銆? 榪欓噷鍋囪鐩戝惉鍣ㄩ潪閿侊紝鍚﹀垯綰跨▼鍙湁絳夊埌鐩戝惉鍣ㄨВ閿佹墠鑳借幏鍙栧璞¢攣)

2.    綰跨▼鍐呭瓨鏇存柊鎵€鏈?/strong> 鐨勫彉閲忥紝涔熷氨鏄浠栧皢璇誨彇涓誨唴瀛樹腑鐨勫彉閲忎嬌鑷繁鐨勫彉閲忎繚璇佹湁鏁堛€?JVM 浼氫嬌鐢ㄤ竴涓?#8220;鑴?#8221;鏍囧織鏉ユ渶浼樺寲榪囩▼錛屼嬌寰椾粎浠呭叿鏈?#8220;鑴?#8221;鏍囧織鍙橀噺琚洿鏂般€傝緇嗙殑鎯呭喌鏌ヨJAVA瑙勮寖鐨?7.9)

3.    浠g爜鍧楄鎵ц( 鍦ㄨ繖涓緥瀛愪腑錛岃緗繑鍥炲€間負鍒氬垰浠庝富鍐呭瓨閲嶇疆鐨刬3 褰撳墠鐨勫€箋€?

4.    浠諱綍鍙橀噺鐨勫彉鏇村皢琚啓鍥炲埌涓誨唴瀛樹腑銆備絾鏄繖涓緥瀛愪腑geti3() 娌℃湁浠€涔堝彉鍖栥€?/span>

5.    綰跨▼閲婃斁瀵硅薄鐨勯攣緇欑洃鍚櫒銆?/span>

鎵€浠olatile 鍙兘鍦ㄧ嚎紼嬪唴瀛樺拰涓誨唴瀛樹箣闂村悓姝ヤ竴涓彉閲忕殑鍊鹼紝鑰宻ynchronized 鍒欏悓姝ュ湪綰跨▼鍐呭瓨鍜屼富鍐呭瓨涔嬮棿鐨勬墍鏈夊彉閲忕殑鍊鹼紝騫朵笖閫氳繃閿佷綇鍜岄噴鏀劇洃鍚櫒鏉ュ疄鐜般€傛樉鐒訛紝synchronized 鍦ㄦ€ц兘涓婂皢姣攙olatile 鏇村姞鏈夋墍娑堣€椼€?/span>

 

=============鍏充簬涓よ€呯殑鍖哄埆===================

1.volatile鏈川鏄湪鍛婅瘔jvm褰撳墠鍙橀噺鍦ㄥ瘎瀛樺櫒錛堝伐浣滃唴瀛橈級涓殑鍊兼槸涓嶇‘瀹氱殑錛岄渶瑕佷粠涓誨瓨涓鍙栵紱synchronized鍒欐槸閿佸畾褰撳墠鍙橀噺錛屽彧鏈夊綋鍓嶇嚎紼嬪彲浠ヨ闂鍙橀噺錛屽叾浠栫嚎紼嬭闃誨浣忋€?nbsp;
2.volatile浠呰兘浣跨敤鍦ㄥ彉閲忕駭鍒紱synchronized鍒欏彲浠ヤ嬌鐢ㄥ湪鍙橀噺銆佹柟娉曘€佸拰綾葷駭鍒殑 
3.volatile浠呰兘瀹炵幇鍙橀噺鐨勪慨鏀瑰彲瑙佹€э紝涓嶈兘淇濊瘉鍘熷瓙鎬?/span> 錛涜€宻ynchronized鍒欏彲浠ヤ繚璇佸彉閲忕殑淇敼鍙鎬у拰鍘熷瓙鎬?nbsp;
4.volatile涓嶄細閫犳垚綰跨▼鐨勯樆濉烇紱synchronized鍙兘浼氶€犳垚綰跨▼鐨勯樆濉炪€?nbsp;
5.volatile鏍囪鐨勫彉閲忎笉浼氳緙栬瘧鍣ㄤ紭鍖栵紱synchronized鏍囪鐨勫彉閲忓彲浠ヨ緙栬瘧鍣ㄤ紭鍖?/p>

 

綰㈠瓧浣撻儴鍒嗙殑鍘熷洜濡備笅錛?br />綰跨▼A淇敼浜嗗彉閲忚繕娌$粨鏉熸椂,鍙﹀鐨勭嚎紼婤鍙互鐪嬪埌宸蹭慨鏀圭殑鍊?鑰屼笖鍙互淇敼榪欎釜鍙橀噺,鑰屼笉鐢ㄧ瓑寰匒閲婃斁閿?鍥犱負Volatile 鍙橀噺娌′笂閿?/p>

abing 2012-10-19 13:36 鍙戣〃璇勮
]]>
java 姝婚攣http://www.aygfsteel.com/abin/archive/2012/10/17/389745.htmlabingabingWed, 17 Oct 2012 07:48:00 GMThttp://www.aygfsteel.com/abin/archive/2012/10/17/389745.htmlhttp://www.aygfsteel.com/abin/comments/389745.htmlhttp://www.aygfsteel.com/abin/archive/2012/10/17/389745.html#Feedback0http://www.aygfsteel.com/abin/comments/commentRss/389745.htmlhttp://www.aygfsteel.com/abin/services/trackbacks/389745.html姝婚攣 姝婚攣鏄繖鏍蜂竴縐嶆儏褰細澶氫釜綰跨▼鍚屾椂琚樆濉烇紝瀹冧滑涓殑涓€涓垨鑰呭叏閮ㄩ兘鍦ㄧ瓑寰呮煇涓祫婧愯閲婃斁銆傜敱浜庣嚎紼嬭鏃犻檺鏈熷湴闃誨錛屽洜姝ょ▼搴忎笉鍙兘姝e父緇堟銆? 瀵艱嚧姝婚攣鐨勬牴婧愬湪浜庝笉閫傚綋鍦拌繍鐢?#8220;synchronized”鍏抽敭璇嶆潵綆$悊綰跨▼瀵圭壒瀹氬璞$殑璁塊棶銆?#8220;synchronized”鍏抽敭璇嶇殑浣滅敤鏄紝紜繚鍦ㄦ煇涓椂鍒誨彧鏈変竴涓嚎紼嬭鍏佽鎵ц鐗瑰畾鐨勪唬鐮佸潡錛屽洜姝わ紝琚厑璁告墽琛岀殑綰跨▼棣栧厛蹇呴』鎷ユ湁瀵瑰彉閲忔垨瀵硅薄鐨勬帓浠栨€х殑璁塊棶鏉冦€傚綋綰跨▼璁塊棶瀵硅薄鏃訛紝綰跨▼浼氱粰瀵硅薄鍔犻攣錛岃€岃繖涓攣瀵艱嚧鍏跺畠涔熸兂璁塊棶鍚屼竴瀵硅薄鐨勭嚎紼嬭闃誨錛岀洿鑷崇涓€涓嚎紼嬮噴鏀懼畠鍔犲湪瀵硅薄涓婄殑閿併€? 鐢變簬榪欎釜鍘熷洜錛屽湪浣跨敤“synchronized”鍏抽敭璇嶆椂錛屽緢瀹規槗鍑虹幇涓や釜綰跨▼浜掔浉絳夊緟瀵規柟鍋氬嚭鏌愪釜鍔ㄤ綔鐨勬儏褰€€備唬鐮佷竴鏄竴涓鑷存閿佺殑綆€鍗曚緥瀛愩€? //浠g爜涓€ class Deadlocker { int field_1; private Object lock_1 = new int[1]; int field_2; private Object lock_2 = new int[1]; public void method1(int value) { “synchronized” (lock_1) { “synchronized” (lock_2) { field_1 = 0; field_2 = 0; } } } public void method2(int value) { “synchronized” (lock_2) { “synchronized” (lock_1) { field_1 = 0; field_2 = 0; } } } } 鍙傝€冧唬鐮佷竴錛岃€冭檻涓嬮潰鐨勮繃紼嬶細 ◆ 涓€涓嚎紼嬶紙ThreadA錛夎皟鐢╩ethod1()銆? ◆ ThreadA鍦╨ock_1涓婂悓姝ワ紝浣嗗厑璁歌鎶㈠厛鎵ц銆? ◆ 鍙︿竴涓嚎紼嬶紙ThreadB錛夊紑濮嬫墽琛屻€? ◆ ThreadB璋冪敤method2()銆? ◆ ThreadB鑾峰緱lock_2錛岀戶緇墽琛岋紝浼佸浘鑾峰緱lock_1銆備絾ThreadB涓嶈兘鑾峰緱lock_1錛屽洜涓篢hreadA鍗犳湁lock_1銆? ◆ 鐜板湪錛孴hreadB闃誨錛屽洜涓哄畠鍦ㄧ瓑寰匱hreadA閲婃斁lock_1銆? ◆ 鐜板湪杞埌ThreadA緇х畫鎵ц銆俆hreadA璇曞浘鑾峰緱lock_2錛屼絾涓嶈兘鎴愬姛錛屽洜涓簂ock_2宸茬粡琚玊hreadB鍗犳湁浜嗐€? ◆ ThreadA鍜孴hreadB閮借闃誨錛岀▼搴忔閿併€? 褰撶劧錛屽ぇ澶氭暟鐨勬閿佷笉浼氳繖涔堟樉鑰屾槗瑙侊紝闇€瑕佷粩緇嗗垎鏋愪唬鐮佹墠鑳界湅鍑猴紝瀵逛簬瑙勬ā杈冨ぇ鐨勫綰跨▼紼嬪簭鏉ヨ灝ゅ叾濡傛銆傚ソ鐨勭嚎紼嬪垎鏋愬伐鍏鳳紝渚嬪JProbe Threadalyzer鑳藉鍒嗘瀽姝婚攣騫舵寚鍑轟駭鐢熼棶棰樼殑浠g爜浣嶇疆銆? 闅愭€ф閿? 闅愭€ф閿佺敱浜庝笉瑙勮寖鐨勭紪紼嬫柟寮忓紩璧鳳紝浣嗕笉涓€瀹氭瘡嬈℃祴璇曡繍琛屾椂閮戒細鍑虹幇紼嬪簭姝婚攣鐨勬儏褰€€傜敱浜庤繖涓師鍥狅紝涓€浜涢殣鎬ф閿佸彲鑳借鍒板簲鐢ㄦ寮忓彂甯冧箣鍚庢墠浼氳鍙戠幇錛屽洜姝ゅ畠鐨勫嵄瀹蟲€ф瘮鏅€氭閿佹洿澶с€備笅闈粙緇嶄袱縐嶅鑷撮殣鎬ф閿佺殑鎯呭喌錛氬姞閿佹搴忓拰鍗犳湁騫剁瓑寰呫€? 鍔犻攣嬈″簭 褰撳涓茍鍙戠殑綰跨▼鍒嗗埆璇曞浘鍚屾椂鍗犳湁涓や釜閿佹椂錛屼細鍑虹幇鍔犻攣嬈″簭鍐茬獊鐨勬儏褰€€傚鏋滀竴涓嚎紼嬪崰鏈変簡鍙︿竴涓嚎紼嬪繀闇€鐨勯攣錛屽氨鏈夊彲鑳藉嚭鐜版閿併€傝€冭檻涓嬮潰鐨勬儏褰紝ThreadA鍜孴hreadB涓や釜綰跨▼鍒嗗埆闇€瑕佸悓鏃舵嫢鏈塴ock_1銆乴ock_2涓や釜閿侊紝鍔犻攣榪囩▼鍙兘濡備笅錛? ◆ ThreadA鑾峰緱lock_1錛? ◆ ThreadA琚姠鍗狅紝VM璋冨害紼嬪簭杞埌ThreadB錛? ◆ ThreadB鑾峰緱lock_2錛? ◆ ThreadB琚姠鍗狅紝VM璋冨害紼嬪簭杞埌ThreadA錛? ◆ ThreadA璇曞浘鑾峰緱lock_2錛屼絾lock_2琚玊hreadB鍗犳湁錛屾墍浠hreadA闃誨錛? ◆ 璋冨害紼嬪簭杞埌ThreadB錛? ◆ ThreadB璇曞浘鑾峰緱lock_1錛屼絾lock_1琚玊hreadA鍗犳湁錛屾墍浠hreadB闃誨錛? ◆ ThreadA鍜孴hreadB姝婚攣銆? 蹇呴』鎸囧嚭鐨勬槸錛屽湪浠g爜涓濇涓嶅仛鍙樺姩鐨勬儏鍐典笅錛屾湁浜涙椂鍊欎笂榪版閿佽繃紼嬩笉浼氬嚭鐜幫紝VM璋冨害紼嬪簭鍙兘璁╁叾涓竴涓嚎紼嬪悓鏃惰幏寰條ock_1鍜宭ock_2涓や釜閿侊紝鍗崇嚎紼嬭幏鍙栦袱涓攣鐨勮繃紼嬫病鏈夎涓柇銆傚湪榪欑鎯呭艦涓嬶紝甯歌鐨勬閿佹嫻嬪緢闅劇‘瀹氶敊璇墍鍦ㄣ€? 鍗犳湁騫剁瓑寰? 濡傛灉涓€涓嚎紼嬭幏寰椾簡涓€涓攣涔嬪悗榪樿絳夊緟鏉ヨ嚜鍙︿竴涓嚎紼嬬殑閫氱煡錛屽彲鑳藉嚭鐜板彟涓€縐嶉殣鎬ф閿侊紝鑰冭檻浠g爜浜屻€? //浠g爜浜?public class queue { static java.lang.Object queueLock_; Producer producer_; Consumer consumer_; public class Producer { void produce() { while (!done) { “synchronized” (queueLock_) { produceItemAndAddItToQueue(); “synchronized” (consumer_) { consumer_.notify(); } } } } public class Consumer { consume() { while (!done) { “synchronized” (queueLock_) { “synchronized” (consumer_) { consumer_.wait(); } removeItemFromQueueAndProcessIt(); } } } } } } 鍦ㄤ唬鐮佷簩涓紝Producer鍚戦槦鍒楀姞鍏ヤ竴欏規柊鐨勫唴瀹瑰悗閫氱煡Consumer錛屼互渚垮畠澶勭悊鏂扮殑鍐呭銆傞棶棰樺湪浜庯紝Consumer鍙兘淇濇寔鍔犲湪闃熷垪涓婄殑閿侊紝闃繪Producer璁塊棶闃熷垪錛岀敋鑷沖湪Consumer絳夊緟Producer鐨勯€氱煡鏃朵篃浼氱戶緇繚鎸侀攣銆傝繖鏍鳳紝鐢變簬Producer涓嶈兘鍚戦槦鍒楁坊鍔犳柊鐨勫唴瀹癸紝鑰孋onsumer鍗村湪絳夊緟Producer鍔犲叆鏂板唴瀹圭殑閫氱煡錛岀粨鏋滃氨瀵艱嚧浜嗘閿併€? 鍦ㄧ瓑寰呮椂鍗犳湁鐨勯攣鏄竴縐嶉殣鎬х殑姝婚攣錛岃繖鏄洜涓轟簨鎯呭彲鑳芥寜鐓ф瘮杈冪悊鎯崇殑鎯呭喌鍙戝睍—Producer綰跨▼涓嶉渶瑕佽Consumer鍗犳嵁鐨勯攣銆傚敖綆″姝わ紝闄ら潪鏈夌粷瀵瑰彲闈犵殑鐞嗙敱鑲畾Producer綰跨▼姘歌繙涓嶉渶瑕佽閿侊紝鍚﹀垯榪欑緙栫▼鏂瑰紡浠嶆槸涓嶅畨鍏ㄧ殑銆傛湁鏃?#8220;鍗犳湁騫剁瓑寰?#8221;榪樺彲鑳藉紩鍙戜竴榪炰覆鐨勭嚎紼嬬瓑寰咃紝渚嬪錛岀嚎紼婣鍗犳湁綰跨▼B闇€瑕佺殑閿佸茍絳夊緟錛岃€岀嚎紼婤鍙堝崰鏈夌嚎紼婥闇€瑕佺殑閿佸茍絳夊緟絳夈€? 瑕佹敼姝d唬鐮佷簩鐨勯敊璇紝鍙渶淇敼Consumer綾伙紝鎶妛ait()縐誨嚭“synchronized”()鍗沖彲銆?/pre>

abing 2012-10-17 15:48 鍙戣〃璇勮
]]>
Java 涓夌鏂瑰紡瀹炵幇澶氱嚎紼?/title><link>http://www.aygfsteel.com/abin/archive/2012/10/12/389494.html</link><dc:creator>abing</dc:creator><author>abing</author><pubDate>Fri, 12 Oct 2012 15:43:00 GMT</pubDate><guid>http://www.aygfsteel.com/abin/archive/2012/10/12/389494.html</guid><wfw:comment>http://www.aygfsteel.com/abin/comments/389494.html</wfw:comment><comments>http://www.aygfsteel.com/abin/archive/2012/10/12/389494.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/abin/comments/commentRss/389494.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/abin/services/trackbacks/389494.html</trackback:ping><description><![CDATA[<div>絎竴縐嶏細錛圱hread錛?br /> <p>package com.abin.lee.servlet.mythread.thread;</p> <p>public class Mythread extends Thread{<br /> private String name;<br /> public Mythread(String name) {<br />  this.name=name;<br /> }<br /> public void run() {<br />  synchronized(this.name){<br />   System.out.println("寮€濮嬫椂闂達細"+System.currentTimeMillis()+",綰跨▼鍚嶅瓧錛?+Thread.currentThread().getName());<br />   System.out.println("name="+name);<br />   System.out.println("緇撴潫鏃墮棿錛?+System.currentTimeMillis()+",綰跨▼鍚嶅瓧錛?+Thread.currentThread().getName());<br /> <br />  }<br /> }<br /> <br />}<br /></p><br /><br />嫻嬭瘯浠g爜錛?br /> <p>package com.abin.lee.servlet.mythread.thread;</p> <p>public class MythreadTest {<br /> public static void main(String[] args) {<br />  Mythread mythread1=new Mythread("ManyThread");<br />  Mythread mythread2=new Mythread("ManyThread");<br />  mythread1.start();<br />  mythread2.start();<br /> }</p> <p>}<br /></p><br /><br /><br />絎簩縐嶏細錛圧unnable錛?br /> <p>package com.abin.lee.servlet.mythread.runnable;</p> <p>public class MyRunnable implements Runnable{<br /> private String name;<br /> public MyRunnable(String name) {<br />  this.name=name;<br /> }<br /> public synchronized void run(){<br />   System.out.println("寮€濮嬫椂闂達細"+System.currentTimeMillis()+",綰跨▼鍚嶅瓧錛?+Thread.currentThread().getName());<br />   System.out.println("name="+name);<br />   try {<br />    Thread.sleep(3000);<br />   } catch (InterruptedException e) {<br />    e.printStackTrace();<br />   }<br />   System.out.println("緇撴潫鏃墮棿錛?+System.currentTimeMillis()+",綰跨▼鍚嶅瓧錛?+Thread.currentThread().getName());<br /> }<br />}<br /></p><br /><br /><br />嫻嬭瘯浠g爜錛?br /> <p>package com.abin.lee.servlet.mythread.runnable;</p> <p>public class MyRunnableTest {<br /> public static void main(String[] args) {<br />  MyRunnable myRunnable=new MyRunnable("ManyThread");<br />  Thread thread1=new Thread(myRunnable);<br />  Thread thread2=new Thread(myRunnable);<br />  thread1.start();<br />  thread2.start();<br /> }<br />}<br /></p><br /><br /><br />絎笁縐嶏細錛圕allable錛夎繖縐嶈鏄庝竴涓嬶紝榪欎釜瀹炵幇澶氱嚎紼嬬殑鏂瑰紡鏄湪JDK1.5寮曡繘鐨勶紝鍦╦ava.util.concurrent.Callable  榪欎釜騫跺彂鍖呬笅闈紝騫朵笖鎻愪緵鍚屾榪斿洖緇撴灉鐨勫綰跨▼銆?br /> <p>package com.abin.lee.servlet.mythread.callable;</p> <p>import java.util.concurrent.Callable;<br />import java.util.concurrent.locks.Lock;<br />import java.util.concurrent.locks.ReentrantLock;</p> <p>public class MyCallable implements Callable<String>{<br /> private String name;<br /> public MyCallable(String name) {<br />  this.name=name;<br /> }<br /> public String call() throws Exception {<br />  Lock lock=new ReentrantLock();<br />  lock.lock();<br />  String result="";<br />  try {<br />   System.out.println("寮€濮嬫椂闂達細"+System.currentTimeMillis()+",綰跨▼鍚嶅瓧錛?+Thread.currentThread().getName());<br />   System.out.println("name="+name);<br />   if(name.equals("ManyThread")){<br />    result="success";<br />   }else{<br />    result="failure";<br />   }<br />   try {<br />    Thread.sleep(3000);<br />   } catch (InterruptedException e) {<br />    e.printStackTrace();<br />   }<br />   System.out.println("緇撴潫鏃墮棿錛?+System.currentTimeMillis()+",綰跨▼鍚嶅瓧錛?+Thread.currentThread().getName());<br /> <br />  } catch (Exception e) {<br />   e.printStackTrace();<br />  }finally{<br />   lock.unlock();<br />  }<br /><br />   return result;<br />  <br /> }<br /> <br />}<br /></p><br /><br /><br />嫻嬭瘯浠g爜錛?br /> <p>package com.abin.lee.servlet.mythread.callable;</p> <p>import java.util.concurrent.ExecutionException;<br />import java.util.concurrent.ExecutorService;<br />import java.util.concurrent.Executors;<br />import java.util.concurrent.Future;</p> <p>import org.junit.Test;</p> <p>public class MyCallableTest {<br /> @Test<br /> public void testMyCallable() throws InterruptedException, ExecutionException{<br />  ExecutorService executor=Executors.newFixedThreadPool(3);<br />  MyCallable myCallable=new MyCallable("ManyThread");<br />  Future future1=executor.submit(myCallable);<br />  System.out.println("future1="+future1.get());<br />  Future future2=executor.submit(myCallable);<br />  System.out.println("future2="+future2.get());<br />  Future future3=executor.submit(myCallable);<br />  System.out.println("future3="+future3.get());<br />  <br /> }</p> <p>}<br /><br />嫻嬭瘯緇撴灉錛?br /></p><div>寮€濮嬫椂闂達細1350056647659,綰跨▼鍚嶅瓧錛歱ool-1-thread-1</div><div>name=ManyThread</div><div>緇撴潫鏃墮棿錛?350056650661,綰跨▼鍚嶅瓧錛歱ool-1-thread-1</div><div>future1=success</div><div>寮€濮嬫椂闂達細1350056650661,綰跨▼鍚嶅瓧錛歱ool-1-thread-2</div><div>name=ManyThread</div><div>緇撴潫鏃墮棿錛?350056653661,綰跨▼鍚嶅瓧錛歱ool-1-thread-2</div><div>future2=success</div><div>寮€濮嬫椂闂達細1350056653662,綰跨▼鍚嶅瓧錛歱ool-1-thread-3</div><div>name=ManyThread</div><div>緇撴潫鏃墮棿錛?350056656663,綰跨▼鍚嶅瓧錛歱ool-1-thread-3</div><div>future3=success</div><div></div><p> </p></div><img src ="http://www.aygfsteel.com/abin/aggbug/389494.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/abin/" target="_blank">abing</a> 2012-10-12 23:43 <a href="http://www.aygfsteel.com/abin/archive/2012/10/12/389494.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <a href="http://www.aygfsteel.com/" title="狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频">狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频</a> </div> </footer> 主站蜘蛛池模板: <a href="http://" target="_blank">郯城县</a>| <a href="http://" target="_blank">古交市</a>| <a href="http://" target="_blank">德钦县</a>| <a href="http://" target="_blank">博乐市</a>| <a href="http://" target="_blank">全州县</a>| <a href="http://" target="_blank">蛟河市</a>| <a href="http://" target="_blank">金昌市</a>| <a href="http://" target="_blank">榆中县</a>| <a href="http://" target="_blank">牡丹江市</a>| <a href="http://" target="_blank">遵义县</a>| <a href="http://" target="_blank">民乐县</a>| <a href="http://" target="_blank">石屏县</a>| <a href="http://" target="_blank">息烽县</a>| <a href="http://" target="_blank">曲沃县</a>| <a href="http://" target="_blank">濮阳县</a>| <a href="http://" target="_blank">兴业县</a>| <a href="http://" target="_blank">宁化县</a>| <a href="http://" target="_blank">邢台市</a>| <a href="http://" target="_blank">广宗县</a>| <a href="http://" target="_blank">佛坪县</a>| <a href="http://" target="_blank">五峰</a>| <a href="http://" target="_blank">静海县</a>| <a href="http://" target="_blank">陇西县</a>| <a href="http://" target="_blank">阜平县</a>| <a href="http://" target="_blank">安康市</a>| <a href="http://" target="_blank">利川市</a>| <a href="http://" target="_blank">河北省</a>| <a href="http://" target="_blank">凤庆县</a>| <a href="http://" target="_blank">江阴市</a>| <a href="http://" target="_blank">九龙县</a>| <a href="http://" target="_blank">新巴尔虎左旗</a>| <a href="http://" target="_blank">应用必备</a>| <a href="http://" target="_blank">西充县</a>| <a href="http://" target="_blank">沽源县</a>| <a href="http://" target="_blank">连云港市</a>| <a href="http://" target="_blank">宁阳县</a>| <a href="http://" target="_blank">桓仁</a>| <a href="http://" target="_blank">满城县</a>| <a href="http://" target="_blank">望江县</a>| <a href="http://" target="_blank">临邑县</a>| <a href="http://" target="_blank">普宁市</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>