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...