**注意:**
執行緒thread的構造方法:
執行緒thread常用api:
執行緒同步 - 多個執行緒, 共享資源
載入和顯示兩個執行緒:
執行緒池程式
程序執行緒
重寫 run 方法
建立自定義的執行緒物件
開啟執行緒 start()
thread t =
newmythread1
("執行緒1");
t.start()
;
重寫 run 方法
建立自定義的任務物件
通過任務物件, 構造乙個執行緒物件
開啟執行緒 start()
mythread task =
newmythread()
;//mythread 是自己建立的任務物件
thread t =
newthread
(task,
"執行緒1");
t.start()
;
繼承 thread類:
thread t =
newthread()
}}; t.
start()
;
繼承runnable介面:
runnable run =
newrunnable()
}}; thread t1 =
newthread
(run)
; t1.
start()
;
1.不是哪個執行緒先start, 就先執行哪個執行緒,執行緒的執行順序, 是不固定的.
1.new 自定義執行緒類(): 自定義類的構造方法, 隨意
2.new thread(): 無參構造器
3.new thread(string): string->指定的執行緒名
thread t =
newthread
("執行緒1"
);
4.new thread(runnable): runnable->執行緒任務
thread t =
newthread
(task)
;
5.new thread(runnable, string): runnable->執行緒任務, string->指定的執行緒名
thread t =
newthread
(task,
"執行緒1"
);
獲得當前正在執行的執行緒物件
獲得執行緒物件的名字, 執行緒在建立時可以指定名字, 也可以預設分配名字
返回此執行緒的優先順序
void setpriority(int): 設定執行緒的優先順序
測試這個執行緒是否是守護執行緒
void setdaemon(boolean): 設定這個執行緒是守護執行緒
執行緒休眠指定時間
會有乙個已檢查異常, 所以必須要 try-catch
等待呼叫這個方法的執行緒結束, 再繼續後續**
會有乙個已檢查異常, 所以必須要 try-catch
主動放棄cpu的時間片
優先順序: 1~10
改變cpu分配時間片的概率
守護執行緒 - 前台執行緒
當所有的前台執行緒結束, 守護執行緒也會自動結束
gc 就是守護執行緒
當執行緒執行完這個方法, 才會將鎖釋放
加到方法上, 同步方法鎖
加到**上, 借助物件, 通常是this,
確保同步的執行緒, 物件共享即可
實現類: reentrantlock lock = new reentrantlock();
加鎖: 鎖物件.lock();
解鎖: 鎖物件.unlock();
1.執行緒1 負責的載入任務. 1%~100% -> 載入完成
2.執行緒2 負責的顯示任務. 要求載入完才能顯示
執行緒1 和 執行緒2 是同時開啟的 start()
執行緒通訊: 兩個執行緒有共享資料, 執行緒之間有動作互動
wait(): 等待
notify(): 喚醒
public
class
demo
}
public
class
loadpicture
extends
thread
public
void
run(
) system.out.
println
("載入完成");
// 設定狀態為已載入完成
picture.isload =
true
;synchronized
(picture)
// 等待顯示完成if(
!picture.isshow)
catch
(interruptedexception e)}}
// 假設已經限時完成
system.out.
println()
;for
(int i =
0; i <
100; i++
) system.out.
println()
;}}
public
class
picture
public
class
showpicture
extends
thread
public
void
run(
)catch
(interruptedexception e)}}
// 假設已經載入完成
system.out.
println
("顯示!");
trycatch
(interruptedexception e)
system.out.
println
("顯示完成!");
// 改變顯示狀態
picture.isshow =
true
;synchronized
(picture)
}}
使⽤執行緒池中線程物件的步驟:
建立執行緒池物件。
建立runnable接⼝⼦類物件。(task)
提交runnable接⼝⼦類物件。(take task)
關閉執行緒池(⼀般不做)
// 建立執行緒池物件
executorservice service = executors.
newfixedthreadpool(2
);// 包含2個線
程物件
// 建立runnable例項物件
myrunnable r =
newmyrunnable()
;
// 從執行緒池中獲取執行緒物件,然後調⽤myrunnable中的run()
service.
submit
(r);
// 再獲取個執行緒物件,調⽤myrunnable中的run()
service.
submit
(r);
service.
submit
(r);
// 注意:submit⽅法調⽤結束後,程式並不終⽌,是因為執行緒池控制了執行緒的關閉。
// 將使⽤完的執行緒⼜歸還到了執行緒池中
// 關閉執行緒池
service.
shutdown()
;
01多執行緒基礎
1 多執行緒 為了提高程式執行效率 什麼是執行緒 執行緒就是一條程式執行路徑或者執行流程 什麼是程序 執行中的程式,每個程序都有一條主線程,在實際執行中,程序也可以理解為多個執行緒的集合。2 多執行緒應用場景 3 建立執行緒有哪些方式 1 使用繼承tread類方式,重寫run方法 2 使用實現run...
多執行緒 01 基礎
乙個程序可以有多個執行緒,如你開啟qq是乙個程序,但是聊天 開語音可能是乙個乙個的執行緒。thread類實現了runnable介面。繼承thread,實現了runnable介面。呼叫 runnabel是個介面,要通過實現類來進行呼叫。start方法是啟動乙個執行緒,run方法是呼叫乙個方法。slee...
執行緒池01 執行緒池基礎知識
執行緒池的執行邏輯如下 核心引數 public threadpoolexecutor int corepoolsize,int maximumpoolsize,long keepalivetime,timeunit unit,blockingqueueworkqueue,threadfactory ...