多執行緒02 執行緒建立

2021-10-08 07:12:29 字數 3071 閱讀 8275

1、方式一:繼承 thread 類,重寫run()方法,呼叫start()開啟執行緒

public

class

thread01

extends

thread

}// main() 是主線程

public

static

void

main

(string[

] args)

throws interruptedexception

}}

結果說明:開啟的執行緒會在主線程中穿插輸出結果,說明兩個執行緒同時執行,先後順序由cpu決定並排程

}}3、方式二:實現 runnable 介面,重寫run()方法,執行執行緒需要將 runnable 介面實現類丟入thread 物件中,呼叫start()開啟執行緒

public

class

thread02

implements

runnable

}public

static

void

main

(string[

] args)

}}

4、小結

繼承 thread 類

實現 runnable 介面

5、利用多執行緒操作同一資源案例(初始併發問題)

public

class

threaddemo02

implements

runnable

// 模擬耗時

trycatch

(interruptedexception e)

system.out.

println

(thread.

currentthread()

.getname()

+"正在**第"

+ tickets--

+"張票!");

}}public

static

void

main

(string[

] args)

}

輸出結果:出現併發問題!

李四正在**第10張票!

張三正在**第8張票!

王五正在**第9張票!

張三正在**第7張票!

李四正在**第6張票!

王五正在**第7張票!

王五正在**第5張票!

李四正在**第4張票!

張三正在**第3張票!

李四正在**第1張票!

王五正在**第0張票!

張三正在**第2張票!

6、龜兔賽跑案例

public

class

race

implements

runnable

catch

(interruptedexception e)

}// 比賽結束標誌

boolean flag =

gameover

(i);

if(flag)

system.out.

println

(thread.

currentthread()

.getname()

+"-->跑了第"

+ i +

"步");}

}// 模擬比賽結束

public

boolean

gameover

(int step)

if(step ==

100)

return

false;}

public

static

void

main

(string[

] args)

}

7、方式三:實現 callable<> 介面,重寫 call() 方法,利用執行緒池工具類建立執行緒池,呼叫submit()傳入callable物件開啟執行緒,可以獲取返回值

public

class

thread03

implements

callable

public boolean call()

throws exception

public

static

void

main

(string[

] args)

throws executionexception, interruptedexception

}class

web**********2

catch

(ioexception e)

}}

多執行緒02

什麼是使用者態和核心態 在作業系統裡面,作業系統的核心佔一部分記憶體,使用者應用程式佔一部分記憶體,核心即可以訪問自身的記憶體,也可以訪問使用者應用程式的記憶體,但是使用者應用程式只能訪問自身的記憶體,不能訪問核心的記憶體 執行緒的啟動 關閉 切換都要依賴於核心態 voliate 保證執行緒可見性 ...

Python 多執行緒 (02)

當多個執行緒同時訪問乙個變數的時候,會產生共享變數的問題。問題解決 鎖 是乙個標誌,表示乙個執行緒正在占用一些資源 訊號燈 鎖的使用方法 上鎖,使用共享資源,放心的用,取消鎖,釋放鎖。案例1import threading sum 0 loopsum 1000000 lock threading.l...

多執行緒學習 建立執行緒

執行緒的建構函式 public thread public thread runnable target public thread string name public thread runnable target,string name public thread threadgroup gro...