1.執行緒的建立方法
繼承thread類
實現runnable介面(重寫run方法)
實現callable介面(重寫call方法)
2.靜態**
簡單來說,靜態**就是**物件和目標物件實現同樣的介面,**物件會將目標物件傳遞進來,用目標物件來呼叫方法並新增自己的操作。
new thread(()->system.out.println(「通過lambda表示式重寫run方法」))
也就是說,thread裡的target接受目標物件,並且thread的run方法使用target的run方法
3.執行緒的五大狀態
新建狀態、就緒狀態、執行狀態、阻塞狀態、終止狀態
4.執行緒的常用方法
睡眠sleep
禮讓yield
插隊join
優先順序setpriority getpriority
狀態getstate
守護執行緒setdaemon(true)
停止stop(建議設定flag進行控制)
5.同步和鎖
synchronized 可同步**塊和方法
synchorinized() {}
lock 只能用於**塊
reentrantlock lock = new reentrantlock();
try finally
copyonwritearraylist
6.死鎖的四個條件
互斥條件、請求和保持條件、不剝奪條件、迴圈等待條件
7.執行緒池
executors和executorservice
1、建立服務newfixedthreadpool
2、執行操作execute submit
3、獲取結果 get
4、關閉服務 shutdown
8.執行緒通訊
生產者消費者問題
管程法(緩衝區)和訊號燈法(flag)
public
class
testpc
}class
producer
extends
thread
@override
public
void
run()}
}class
consumer
extends
thread
@override
public
void
run()}
}class
chicken
}class
container
catch
(interruptedexception e)
} chickens[count]
= chicken;
count++
;this
.notifyall()
;}public
synchronized chicken pop()
catch
(interruptedexception e)
} count--
; chicken chicken = chickens[count]
;this
.notifyall()
;return chicken;
}}
public
class
testpc2
}class
actor
extends
thread
@override
public
void
run(
)else}}
}class
audience
extends
thread
@override
public
void
run()}
}class
tvcatch
(interruptedexception e)
} system.out.
println
("演員表演了"
+ voice)
;this
.notifyall()
;this
.voice = voice;
this
.flag =
!this
.flag;
}public
synchronized
void
watch()
catch
(interruptedexception e)
} system.out.
println
("觀眾**了了"
+this
.voice)
;this
.notifyall()
;this
.flag =
!this
.flag;
}}
多執行緒筆記
1 stdin fileno 在unix一些系統呼叫中使用到stdin fileno表示標準輸入,stdout fileno表示標準輸出,stderr fileno表示標準出錯,使用時需要加標頭檔案 在unix下還有stdin,stdout,stderr表示同樣的含義。stdin fileno與st...
多執行緒筆記
一.程序 就是cpu所要執行的乙個任務 自己理解的 執行緒 執行緒是乙個併發執行的順序流,乙個程序包括多個順序執行流程,這執行流程稱為執行緒 就是任務中許多的 二.執行緒排程分配cpu的時間片段給不同的執行緒,得到時間片段的執行緒被cpu執行,其他執行緒等待,執行緒排程會盡可能的分配時間片段取執行。...
多執行緒筆記
掌握的 1.兩種方式建立執行緒 繼承,實現 2.繼承和實現的區分 3.執行緒的生命週期 4.不同狀態下,所對應的方法。通過哪些方法,可以讓執行緒達到某個狀態。5.同步 塊,同步方法。1.學習多執行緒的原因?生活中 程式 乙個完整的功能 方法,沒有被執行 程序 乙個完整的功能 方法,被執行 執行緒 程...