Java线程常用方法详解:从入门到实战应用
浣犳槸涓嶆槸鍒氬Java澶氱嚎绋嬶紝鐪嬪埌閭d簺绾跨▼鏂规硶灏卞ご澶э紵鍒厡锛佷粖澶╁挶浠氨鐢?璇翠汉璇?鐨勬柟寮忥紝鎶娾€?strong>鈥媠tart()銆乻leep()銆亀ait()鈥?/strong>鈥嬭繖浜涚湅鐫€灏卞ご绉冪殑鏂规硶鎺板紑浜嗘弶纰庝簡璁层€備繚璇佷綘鐪嬪畬灏辫兘涓婃墜鐢紝鍐嶄篃涓嶆€曢潰璇曞畼闂?绾跨▼鍜岃繘绋嬫湁鍟ュ尯鍒?杩欑閫佸懡棰橈紒
涓€銆佸厛鎼炴槑鐧斤細鍟ユ槸绾跨▼鏂规硶锛?/h3>
锛堝亣瑁呰繖閲屾湁涓皬鏍囬锛屼絾涓嶇敤鏍囩锛?/p>
涓句釜鏍楀瓙馃尠锛氫綘寮€浜嗕竴瀹跺ザ鑼跺簵锛堣繘绋嬶級锛屽簵閲?涓憳宸ワ紙绾跨▼锛夊悓鏃跺仛濂惰尪銆傗€?strong>鈥嬬嚎绋嬫柟娉曞氨鏄杩欎簺鍛樺伐鍗忚皟宸ヤ綔鐨勫伐鍏封€?/strong>鈥嬨€傛瘮濡傝灏忕帇鍏堟瓏浼氬効锛坰leep锛夛紝绛夌弽鐝犵叜濂戒簡鍐嶅彨浠栵紙notify锛夈€?/p>
鈥?strong>鈥嬮噸鐐规潵浜嗏€?/strong>鈥嬶細Java閲屾搷浣滅嚎绋嬬殑鏍稿績鏂规硶閮借棌鍦═hread绫诲拰Object绫婚噷銆傚挶浠厛鐪嬪紶瀵规瘮琛紝5绉掔湅鎳傛渶甯哥敤鐨?涓柟娉曪細
鏂规硶鍚?/th> | 褰掑睘绫?/th> | 浣滅敤 | 浣跨敤鍦烘櫙 |
---|---|---|---|
start() | Thread | 鍚姩鏂扮嚎绋?/td> | 澶氫换鍔″苟琛屽鐞?/td> |
sleep() | Thread | 璁╁綋鍓嶇嚎绋嬫殏鍋?/td> | 妯℃嫙鑰楁椂鎿嶄綔 |
wait() | Object | 閲婃斁閿佸苟绛夊緟 | 绾跨▼闂撮€氫俊 |
notify() | Object | 鍞ら啋绛夊緟鐨勭嚎绋?/td> | 鍗忎綔瀹屾垚浠诲姟 |
join() | Thread | 绛夎繖涓嚎绋嬫浜嗗啀缁х画 | 淇濊瘉浠诲姟鎵ц椤哄簭 |
yield() | Thread | 璁╁嚭CPU璧勬簮 | 閬垮厤绾跨▼闀挎椂闂村崰鐢–PU |
浜屻€佹柊鎵嬪繀韪╃殑鍧戯細start()鍜宺un()鏈夊暐鍖哄埆锛?/h3>
锛堣繖閲屽亣瑁呮槸绗簩涓皬鏍囬锛?/p>
寰堝灏忕櫧浼氳繖涔堝啓锛?/p>
java澶嶅埗Thread t = new Thread(() -> System.out.println("hello")); t.run(); // 閿欒锛佽繖杩樻槸鍦ㄤ富绾跨▼鎵ц t.start(); // 姝g‘锛佽繖鎵嶅惎鍔ㄦ柊绾跨▼
鈥?strong>鈥嬪垝閲嶇偣鈥?/strong>鈥嬶細鐩存帴璋冪敤run()灏卞儚璁╁簵闀夸翰鑷仛濂惰尪锛屾牴鏈病鍚姩鏂板憳宸ワ紒start()鎵嶆槸鐪熸璁╂柊绾跨▼骞叉椿鐨勬纭Э鍔裤€?/p>
涓夈€乻leep()鍜寃ait()杩欏鍐ゅ
缁忓父鏈変汉闂垜锛?杩欎咯涓嶉兘鏄绾跨▼绛夌潃鍚楋紵鏈夊暐涓嶄竴鏍凤紵"
涓句釜鐜板疄渚嬪瓙锛氫綘鍘婚摱琛屽姙涓氬姟锛堥攣灏辨槸鏌滃彴锛?/p>
- 鈥?strong>鈥媠leep(2000)鈥?/strong>鈥?灏卞儚鏌滃憳璇?绛夋垜涓ゅ垎閽?锛屼絾鏌滃彴杩樻槸琚粬鍗犵潃
- 鈥?strong>鈥媤ait()鈥?/strong>鈥?灏辨槸鏌滃憳璇?鎴戣繖杈归渶瑕佺瓑鏉愭枡"锛屼富鍔ㄧ寮€鏌滃彴璁╁埆浜虹敤
鈥?strong>鈥嬬‖鏍稿姣斺€?/strong>鈥嬶細
- sleep()瑕佹寚瀹氱瓑寰呮椂闂达紝wait()鍙互涓嶈鏃堕棿
- sleep()涓嶉噴鏀鹃攣锛寃ait()浼氶噴鏀鹃攣
- sleep()鍦═hread绫婚噷锛寃ait()鍦∣bject绫婚噷
鍥涖€佸疄鎴樻渚嬶細濂惰尪搴楀彨鍙风郴缁?/h3>
鍋囪鍜变滑瑕佸啓涓ザ鑼跺簵鍙彿绋嬪簭锛?涓獥鍙e悓鏃跺伐浣滐細
java澶嶅埗public class MilkTeaShop { public static void main(String[] args) throws InterruptedException { Thread window1 = new Thread(() -> { System.out.println("1鍙风獥鍙e紑濮嬪仛濂惰尪"); try { Thread.sleep(3000); // 妯℃嫙鍋氬ザ鑼惰3绉?/span> } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("1鍙风獥鍙eザ鑼跺仛濂戒簡"); }); window1.start(); window1.join(); // 绛?鍙风獥鍙e仛瀹屾墠缁х画 System.out.println("閫氱煡椤惧鍙栭"); } }
鈥?strong>鈥嬭繖閲岃棌鐫€涓や釜鐭ヨ瘑鐐光€?/strong>鈥嬶細
- 鐢╯leep()妯℃嫙鑰楁椂鎿嶄綔
- 鐢╦oin()淇濊瘉涓荤嚎绋嬬瓑瀛愮嚎绋嬫墽琛屽畬
浜斻€侀偅浜涘勾鎴戣俯杩囩殑鍧?/h3>
- 鈥?strong>鈥媙otify()闅忔満鍞ら啋鈥?/strong>鈥嬶細鏈夋鍐欒鍗曠郴缁燂紝涓変釜绾跨▼绛夋敮浠樼粨鏋滐紝缁撴灉notify()姣忔闅忔満鍞ら啋涓€涓紝鏈€鍚庢敼鎴恘otifyAll()鎵嶈В鍐?/li>
- 鈥?strong>鈥媦ield()涓嶆槸涓囪兘鑽€?/strong>鈥嬶細璇曞浘鐢▂ield()瑙e喅绾跨▼楗ラタ闂锛岀粨鏋滃彂鐜板畠鍙槸"寤鸿"璁╁嚭CPU锛屽叿浣撹繕寰楃湅鎿嶄綔绯荤粺鑴歌壊
- 鈥?strong>鈥嬪畧鎶ょ嚎绋嬬殑鍧戔€?/strong>鈥嬶細鐢╯etDaemon(true)鍋氬悗鍙颁换鍔★紝缁撴灉涓荤嚎绋嬩竴缁撴潫锛屽畧鎶ょ嚎绋嬬洿鎺ユ毚姣欙紝鏁版嵁閮芥病淇濆瓨
鍏€佷釜浜鸿娉粡楠?/h3>
璇村彞鎺忓績绐濆瓙鐨勮瘽锛屽绾跨▼缂栫▼灏卞儚鐐掕彍鈥斺€旂伀鍊欙紙绾跨▼璋冨害锛夋帉鎻′笉濂藉氨瀹规槗缈昏溅銆傛垜寤鸿鏂版墜锛?/p>
- 鍏堢敤鏈€绠€鍗曠殑synchronized锛屽埆鎬ョ潃涓奓ock
- 浼樺厛鐢ㄧ嚎绋嬫睜锛屽埆鍔ㄤ笉鍔╪ew Thread()
- 涓€瀹氳鍐欏紓甯稿鐞嗭紝鐗瑰埆鏄疘nterruptedException
- 璋冭瘯鏃跺鐢═hread.currentThread().getName()鐪嬪綋鍓嶇嚎绋?/li>
璁颁綇鍟婂厔寮熶滑锛屽绾跨▼涓嶆槸鐜勫锛屽氨鏄緱澶氬啓澶氳俯鍧戙€傚垰寮€濮嬪彲鑳借寰?鎴戝啓鐨勪唬鐮佹€庝箞鑰佹娊椋?锛岀瓑鐪熸鎼炴槑鐧借繖鍑犱釜鏍稿績鏂规硶鐨勮劸姘旓紝浣犲氨浼氬彂鐜扳€斺€斿搸锛熷師鏉ユ垜涔熻兘褰撳苟鍙戝ぇ绁烇紒
本文由嘻道妙招独家原创,未经允许,严禁转载