執行緒 1 建立執行緒的兩種方式

2021-08-07 19:45:38 字數 1743 閱讀 7466

1. 程序個執行緒的區別

程序:系統程式執行的最小單位,乙個程式至少有乙個程序:系統會在記憶體中開闢一塊空間用來執行程式。

執行緒:程式執行任務的最小單位,執行緒不能單獨存在,必須存在與程序中,乙個程序中至少包含乙個執行緒。

2. 建立和啟動執行緒的兩種方式

建立執行緒的方式一:

[public] class 類名 implements runnable

建立物件: 類名 物件名 = new 類名();

啟動執行緒 thread t = new thread(物件名);

啟動: t.start(); // 啟動執行緒呼叫的是start方法,而不是run方法。

原因:因為runnable介面中沒有start方法,所以需要建立thread類的物件來呼叫裡面的start方法。

小案例:

通過實現runnable介面,建立執行緒

package com.runnable.thread;

/**@version 2017-9-7 上午9:27:46 */

public

class

myrunnable

implements

runnable

}

測試通過實現介面建立的執行緒

package com.runnable.thread;

/**@version 2017-9-7 上午9:31:58*/

public

class

testmyrunnable

}

解析:為什麼執行緒的啟動需要通過執行緒物件.start()( 例如:thread.start() )方法來啟動而不是執行緒所在類的物件.run()( 例如myrunnable.run() )方法來執行執行緒?因為通過執行緒物件.start()方法來執行的執行緒是由啟動這個執行緒的執行緒來執行,但是通過myrunnable.run()執行的執行緒是由主線程(main執行緒)來執行的。

建立執行緒的方式二:(推薦使用)

[public] class 類名 extends thread

建立物件: 類名 物件名 = new 類名();

啟動執行緒:物件名.start();

原因:執行緒直接繼承了thread類,所以他的物件裡面就包含了start方法,所以不需要建立thread類的物件來呼叫裡面的start方法,而是通過」執行緒物件.start()」可以直接呼叫裡面的方法。

小案例:

通過繼承thread類,建立執行緒

package com.thread.thread;

/**@version 2017-9-7 上午9:59:03*/

public

class

mythread

extends

thread

}

測試通過繼承thread類建立的執行緒

package com.thread.thread;

public

class testmythread

}

解析:與上面的解釋相同

多執行緒 兩種方式建立執行緒

第一種方式 繼承thread類 public class threaddemo extends thread catch interruptedexception e if s 50 public static void main string args 第二種方式 實現runnable介面 pub...

執行緒建立的兩種方式

建立執行緒的兩種方式 1.繼承thread並重寫方法,在run方法中定義執行緒要執行的任務 class mythread extends thread public class threaddemo1 2.實現runable介面並重寫run方法 class myrunnable implements...

建立執行緒的兩種方式

thread thread new thread catch interruptedexception e system.out.println thread.currentthread getname system.out.println this.getname thread.start thr...