java创建线程的几种方式,了解一下 java线程有几种创建方式?

java\u521b\u5efa\u7ebf\u7a0b\u6709\u51e0\u79cd\u65b9\u5f0f

java\u521b\u5efa\u7ebf\u7a0b\u7684\u65b9\u5f0f\u6709\u4e09\u79cd
\u7b2c\u4e00\u79cd\u662f\u7ee7\u627fThread\u7c7b \u5b9e\u73b0\u65b9\u6cd5run() \u4e0d\u53ef\u4ee5\u629b\u5f02\u5e38 \u65e0\u8fd4\u56de\u503c
\u7b2c\u4e8c\u79cd\u662f\u5b9e\u73b0Runnable\u63a5\u53e3 \u5b9e\u73b0\u65b9\u6cd5run() \u4e0d\u53ef\u4ee5\u629b\u5f02\u5e38 \u65e0\u8fd4\u56de\u503c
\u7b2c\u4e09\u79cd\u662f\u5b9e\u73b0Callable\u63a5\u53e3,\u63a5\u53e3\u4e2d\u8981\u8986\u76d6\u7684\u65b9\u6cd5\u662f public call() \u6ce8\u610f:\u6b64\u65b9\u6cd5\u53ef\u4ee5\u629b\u5f02\u5e38,\u800c\u524d\u4e24\u79cd\u4e0d\u80fd \u800c\u4e14\u6b64\u65b9\u6cd5\u53ef\u4ee5\u6709\u8fd4\u56de\u503c

\u7b2c\u4e09\u79cd\u5982\u4f55\u8fd0\u884c\u5462 Callable\u63a5\u53e3\u5728util.concurrent\u5305\u4e2d,\u7531\u7ebf\u7a0b\u6c60\u63d0\u4ea4
import java.util.concurrent.*;
ExecutorService e = Executors.newFixedThreadPool(10); \u53c2\u6570\u8868\u793a\u6700\u591a\u53ef\u4ee5\u8fd0\u884c\u51e0\u4e2a\u7ebf\u7a0b
e.submit(); \u8fd9\u4e2a\u91cc\u9762\u53c2\u6570\u4f20 \u5b9e\u73b0Callable\u63a5\u53e3\u90a3\u4e2a\u7c7b\u7684\u5bf9\u8c61

\u4e00\u3001\u7ee7\u627fThread\u7c7b\u521b\u5efa\u7ebf\u7a0b\u5b50\u7c7b
1.\u5728\u8fd9\u5b50\u7c7b\u4e2d\u91cd\u5199run\u65b9\u6cd5\uff0c\u5728run\u65b9\u6cd5\u5185\u5199\u7ebf\u7a0b\u4efb\u52a1\u4ee3\u7801
2.\u521b\u5efa\u8be5\u5b50\u7c7b\u5b9e\u4f8b\uff0c\u5373\u662f\u521b\u5efa\u4e86\u4e00\u4e2a\u7ebf\u7a0b\u5b9e\u4f8b
3.\u8c03\u7528\u8be5\u5b9e\u4f8b\u7684start\u65b9\u6cd5\u6765\u542f\u52a8\u8be5\u7ebf\u7a0b
\u4e8c\u3001\u5efa\u4e00\u4e2a\u7c7b\u53bb\u5b9e\u73b0Runnable\u63a5\u53e3
1.\u8be5\u7c7b\u53bb\u5b9e\u73b0\u63a5\u53e3\u7684run\u65b9\u6cd5\uff0crun\u65b9\u6cd5\u5185\u5199\u7ebf\u7a0b\u4efb\u52a1\u4ee3\u7801
2.\u521b\u5efa\u8be5\u7c7b\u5b9e\u4f8b\uff0c\u628a\u8be5\u5b9e\u4f8b\u5f53\u4f5c\u4e00\u4e2a\u6807\u8bb0target\u4f20\u7ed9Thread\u7c7b\uff0c\u5982\uff1aThread t = new Thread(\u8be5\u7c7b\u5b9e\u4f8b)\uff1b\u5373\u521b\u5efa\u4e00\u4e2a\u7ebf\u7a0b\u5bf9\u8c61
3.\u8c03\u7528\u7ebf\u7a0b\u7684star\u65b9\u6cd5\u6765\u542f\u7528\u8be5\u7ebf\u7a0b

第一种方式:使用Runnable接口创建线程

第二种方式:直接继承Thread类创建对象

使用Runnable接口创建线程

1.可以将CPU,代码和数据分开,形成清晰的模型

2.线程体run()方法所在的类可以从其它类中继承一些有用的属性和方法

3.有利于保持程序的设计风格一致

直接继承Thread类创建对象

1.Thread子类无法再从其它类继承(java语言单继承)。

2.编写简单,run()方法的当前对象就是线程对象,可直接操作。

在实际应用中,几乎都采取第一种方式

  • 鍒涘缓绾跨▼鏈夊嚑绉涓嶅悓鐨鏂瑰紡?浣犲枩娆㈠摢涓绉?涓轰粈涔?
    绛旓細涓夌鏂瑰紡鍙互鐢ㄦ潵鍒涘缓绾跨▼锛氱户鎵縏hread绫 瀹炵幇Runnable鎺ュ彛 搴旂敤绋嬪簭鍙互浣跨敤Executor妗嗘灦鏉ュ垱寤虹嚎绋嬫睜 瀹炵幇Runnable鎺ュ彛杩欑鏂瑰紡鏇村彈娆㈣繋锛屽洜涓鸿繖涓嶉渶瑕佺户鎵縏hread绫汇傚湪搴旂敤璁捐涓凡缁忕户鎵夸簡鍒殑瀵硅薄鐨勬儏鍐典笅锛岃繖闇瑕佸缁ф壙锛堣Java涓嶆敮鎸佸缁ф壙锛夛紝鍙兘瀹炵幇鎺ュ彛銆傚悓鏃讹紝绾跨▼姹犱篃鏄潪甯搁珮鏁堢殑锛屽緢瀹规槗瀹炵幇鍜屼娇鐢...
  • 鐢Java瀹炵幇澶绾跨▼鏈鍝簺閫斿緞?
    绛旓細Runnable鎺ュ彛鍙湁涓涓柟娉run()锛屽疄鐜拌繖涓熷彛锛屽氨蹇呴』瑕佸畾涔塺un()鏂规硶鐨勫叿浣撳唴瀹癸紝鐢ㄦ埛鏂板缓绾跨▼鐨鎿嶄綔涔熷氨鐢辫繖涓柟娉曟潵鍐冲畾銆傚畾涔夊ソrun()鏂规硶涔嬪悗锛屽綋鐢ㄦ埛绋嬪簭闇瑕佸缓绔嬫柊绾跨▼鏃讹紝鍙浠ヨ繖涓疄鐜颁簡run()鏂规硶鐨勭被瀵硅薄涓哄弬鏁板垱寤虹郴缁熺被Thread鐨勫璞★紝灏卞彲浠ユ妸鐢ㄦ埛瀹炵幇鐨剅un()鏂规硶鍊熺敤杩囨潵銆俻ublic class Test...
  • java澶绾跨▼鏈夊嚑绉瀹炵幇鏂规硶
    绛旓細run鏂规硶涓畾涔夌殑浠g爜涓虹嚎绋嬩唬鐮侊紝浣唕un鏂规硶涓嶈兘鐩存帴璋冪敤锛屽鏋滅洿鎺ヨ皟鐢ㄥ苟娌℃湁寮鍚柊鐨勭嚎绋嬭屾槸灏唕un鏂规硶浜ょ粰璋冪敤鐨勭嚎绋嬫墽琛 瑕佸紑鍚柊鐨勭嚎绋嬮渶瑕佽皟鐢═hread绫荤殑start()鏂规硶锛璇ユ柟娉曡嚜鍔ㄥ紑鍚竴涓鏂扮殑绾跨▼骞惰嚜鍔ㄦ墽琛宺un鏂规硶涓殑鍐呭 璇风偣鍑昏緭鍏ュ浘鐗囨弿杩 缁撴灉锛氳鐐瑰嚮杈撳叆鍥剧墖鎻忚堪 java澶绾跨▼鐨鍚姩椤哄簭涓嶄竴瀹氭槸...
  • Java澶绾跨▼鏄粈涔堟剰鎬?
    绛旓細Java澶氱嚎绋嬪疄鐜版柟寮忎富瑕鏈変笁绉锛氱户鎵縏hread绫汇佸疄鐜癛unnable鎺ュ彛銆佷娇鐢‥xecutorService銆丆allable銆丗uture瀹炵幇鏈夎繑鍥炵粨鏋滅殑澶氱嚎绋嬨傚叾涓墠涓ょ鏂瑰紡绾跨▼鎵ц瀹屽悗閮芥病鏈夎繑鍥炲硷紝鍙湁鏈鍚庝竴绉嶆槸甯﹁繑鍥炲肩殑銆1銆佺户鎵縏hread绫诲疄鐜板绾跨▼缁ф壙Thread绫荤殑鏂规硶灏界琚垜鍒椾负涓绉嶅绾跨▼瀹炵幇鏂瑰紡锛浣員hread鏈川涓婁篃鏄疄鐜颁簡...
  • Java璇█:Java澶绾跨▼鎬庢牱鍒涘缓
    绛旓細闇瑕佷粠Java.lang.Thread绫绘淳鐢熶竴涓柊鐨勭嚎绋嬬被锛岄噸杞藉畠鐨剅un()鏂规硶锛涘疄鐜癛unnalbe鎺ュ彛锛岄噸杞絉unnalbe鎺ュ彛涓殑run()鏂规硶銆備絾锛屼负浠涔圝ava瑕佹彁渚涗袱绉嶆柟娉曟潵鍒涘缓绾跨▼鍛紵瀹冧滑閮芥湁鍝簺鍖哄埆锛熺浉姣旇岃█锛屽摢涓绉嶆柟娉鏇村ソ鍛紵鍦Java涓紝绫讳粎鏀寔鍗曠户鎵匡紝涔熷氨鏄锛屽綋瀹氫箟涓涓柊鐨勭被鐨勬椂鍊欙紝瀹冨彧鑳芥墿灞曚竴涓閮...
  • java绾跨▼鏄粈涔堟剰鎬?
    绛旓細Java绾跨▼鍦ㄤ娇鐢ㄦ椂闇瑕侀氳繃Thread绫绘垨Runnable鎺ュ彛鍒涘缓绾跨▼瀵硅薄锛孴hread绫绘彁渚涗簡涓浜涙帶鍒绾跨▼鐨勬柟娉曪紝姣斿start(),run(),sleep(),interrupt()绛夈俁unnable鎺ュ彛鍒欏畾涔変簡绾跨▼鐨剅un鏂规硶锛岄氳繃瀹炵幇Runnable鎺ュ彛鍙互璁╃被鍏锋湁绾跨▼鐨勮兘鍔涖備负浜嗙‘淇濆绾跨▼姝g‘鎵ц锛屽湪浣跨敤绾跨▼鏃堕渶瑕佹敞鎰忕嚎绋嬮棿鐨勫悓姝ユ満鍒讹紝浠ラ伩鍏嶅嚭鐜版暟鎹...
  • java澶绾跨▼閮鏈夊嚑绉嶆柟寮瀹炵幇??
    绛旓細寮鍚嚎绋嬶細Thread t = new Thread(瀵硅薄)//鍒涘缓绾跨▼瀵硅薄 t.start()(3)瀹炵幇Callable鎺ュ彛锛岄噸鍐檆all鍑芥暟 Callable鏄被浼间簬Runnable鐨勬帴鍙o紝瀹炵幇Callable鎺ュ彛鐨勭被鍜屽疄鐜癛unnable鐨勭被閮芥槸鍙鍏跺畠绾跨▼鎵ц鐨勪换鍔°侰allable鍜孯unnable鏈夊嚑鐐逛笉鍚:鈶燙allable瑙勫畾鐨勬柟娉鏄痗all()锛岃孯unnable瑙勫畾鐨勬柟娉曟槸run().鈶...
  • Java绾跨▼鎬庢牱浣跨敤?
    绛旓細鍦java涓垱寤涓涓嚎绋嬫湁涓ょ鏂规硶锛歱ackage com.thread;public class ThreadTest1 { public static void main(String[] args) { Runnable1 r = new Runnable1(); //r.run();骞朵笉鏄嚎绋嬪紑鍚紝鑰屾槸绠鍗曠殑鏂规硶璋冪敤 Thread t = new Thread(r);//鍒涘缓绾跨▼ //t.run(); //濡傛灉璇...
  • java涓濡備綍鍚姩涓涓柊鐨绾跨▼
    绛旓細java寮鍚柊绾跨▼鐨勪笁绉嶆柟娉锛氭柟娉1锛氱户鎵縏hread绫 1锛夛細瀹氫箟涓涓户鎵胯嚜Java.lang.Thread绫荤殑绫籄.2锛夛細瑕嗙洊A绫籘hread绫讳腑鐨剅un鏂规硶銆3锛夛細鎴戜滑缂栧啓闇瑕佸湪run鏂规硶涓墽琛岀殑鎿嶄綔锛歳un鏂规硶涓殑浠g爜锛岀嚎绋嬫墽琛屼綋銆4锛夛細鍦╩ain鏂规硶锛堢嚎绋嬶級涓紝鍒涘缓涓涓嚎绋嬪璞″苟鍚姩绾跨▼銆(1)鍒涘缓绾跨▼绫诲璞:A绫 a = ...
  • 绾跨▼鍦java缂栫▼涓殑浣滅敤
    绛旓細绾跨▼鍦╦ava缂栫▼涓殑浣滅敤鍙互瀹炵幇澶氫釜浠诲姟鍚屾椂杩涜銆java鍒涘缓绾跨▼鐨鏂瑰紡鏈甯哥敤鐨勬湁涓ょ銆1銆佺涓绉嶆槸鍒涘缓Thread瀛愮被鐨勪竴涓疄渚嬪苟閲嶅啓run鏂规硶锛run鏂规硶浼氬湪璋冪敤start()鏂规硶涔嬪悗琚墽琛屻備緥瀛愬涓嬶細public class MyThread extends Thread { public void run(){ System.out.println("MyThread running");...
  • 扩展阅读:java 新建线程 ... java 线程面试题 ... 创建线程池的四种方法 ... java入门网站 ... 线程有新建 就绪 运行 ... java的三个主流方向 ... 线程间通信的几种方法 ... 创建一个线程 ... java创建线程池哪几种方式 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网