繼承thread類,並重寫run方法,例項化該類物件,呼叫start方法
**示例
public
class
thread1
extends
thread
}public
static
void
main
(string args)
}}
執行結果(結果不唯一)
1
main1()
1run1()
2run1()
3run1()
4run1()
5run1()
6run1()
7run1()
8run1()
9run1()
10run1()
2main1()
3main1()
4main1()
5main1()
6main1()
7main1()
8main1()
9main1()
10main1
()
實現runnable介面,並重寫run方法,例項化該類物件,並例項化乙個thread類的物件並把實現runnable介面的物件作為引數傳入thread物件中,呼叫thread類物件的start方法。
**示例
public
class
thread2
implements
runnable
}public
static
void
main
(string args)
}}
執行結果(結果不唯一)
1
main()
1run()
2main()
2run()
3run()
4run()
5run()
6run()
7run()
8run()
9run()
10run()
3main()
4main()
5main()
6main()
7main()
8main()
9main()
10main
()
這兩種建立執行緒的方法,無疑第二種 (實現 runnable 介面) 要好一些,因為第一種建立方法繼承了 thread 後就無法繼承其他父類。
補充:為什麼執行緒重寫是在run中,而啟動多執行緒的方式確實start?
1.start()方法來啟動執行緒,真正實現了多執行緒執行。這時無需等待 run 方法體**執行完畢,可以直接繼續執行下面的**;通過呼叫 thread 類的 start () 方法來啟動乙個執行緒, 這時此執行緒是處於就緒狀態, 並沒有執行。 然後通過此 thread 類呼叫方法 run () 來完成其執行操作的, 這裡方法 run () 稱為執行緒體,它包含了要執行的這個執行緒的內容, run 方法執行結束, 此執行緒終止。然後 cpu 再排程其它執行緒。
2.run()方法當作普通方法的方式呼叫。程式還是要順序執行,要等待 run 方法體執行完畢後,才可繼續執行下面的**;程式中只有主線程 —— 這乙個執行緒, 其程式執行路徑還是只有一條, 這樣就沒有達到寫執行緒的目的。
Java多執行緒啟動方式
public class mythread extends thread 輸出當前執行緒物件名稱和執行次數 public static void main string args 1 建立執行緒類,並繼承thread類 2 重寫子類的run方法,實現執行緒的執行邏輯結構 3 在main方法中建立自定...
SpringBoot啟動多執行緒
新建乙個執行緒池的配置類,需要被spring掃瞄到。configuration enableasync public class threadexecutorconfig 新增乙個普通類,裡面編寫需要執行的方法,方法加上 async註解,呼叫方法時自動啟動執行緒。component public c...
多執行緒使用方式
匯入模組 import threading import time 宣告方法 def work n print 開始於 format threading.current thread name,time.ctime time.sleep n print 結束於 format threading.cu...