多執行緒基礎入門
阿新 • • 發佈:2018-12-10
1.執行緒和程序和程式
程式:多個程序的集合(一個程式至少一個程序)
程序:執行緒的集合(一個程序至少一個執行緒)
執行緒:一個執行路徑
2.什麼是執行緒安全問題
當兩個或者多個執行緒共享一個全域性變數對其做寫的操作的時候,結果可能出現誤差.
3.多執行緒之間同步
1)同步程式碼塊:
就是被包裹的程式碼只能有一個執行緒進入
synchronized(鎖){
程式碼
}
2).同步函式
在方法上加上synchronized 就是同步函式
public synchronized 方法返回型別 方法名字()
{
程式碼
}
3. lock鎖
Lock lock = new ReentrantLock();
lock.lock();
try{
//可能會出現執行緒安全的操作
}finally{
//一定在finally中釋放鎖
//也不能把獲取鎖在try中進行,因為有可能在獲取鎖的時候丟擲異常
lock.ublock();
}
3.多執行緒死鎖
同步中巢狀同步,導致鎖沒法釋放,產生死鎖.
4.多執行緒三大特性:
1)原子性: 就是程式的完整性,要麼做完這個事情,要麼就不做,不能做一半不做。
2)可見性:Java記憶體模型中的本地記憶體能否通訊。
3)有序性:程式執行的順序按照程式碼的先後順序執行。
5守護執行緒和非守護執行緒:
Java中有兩種執行緒,一種是使用者執行緒,另一種是守護執行緒。
使用者執行緒是指使用者自定義建立的執行緒,主執行緒停止,使用者執行緒不會停止
守護執行緒當程序不存在或主執行緒停止,守護執行緒也會被停止。
6.多執行緒執行狀態
新建 就緒 阻塞 執行 死亡