黑馬程式設計師 多執行緒

2021-07-03 18:55:25 字數 2168 閱讀 1379

一、多執行緒

程序:正在執行的應用程式。

執行緒:程序的的執行單元,一條執行路徑。

多執行緒:乙個應用程式有多條執行路徑。

二、建立多執行緒的方法

總共有2鐘方式:

第一種:

思路:1.定義乙個類繼承thread

2.重寫run方法:

3.執行緒啟動並執行

**:

public class mythread extends thread 

}}

public class threaddemo 

}

如果我們用物件去掉用run方法的話,它就是乙個普通方法了,所有呼叫start方法有2個作用,第乙個是啟動執行緒,第二個是 呼叫run方法。
第二種方法是取實現runnable介面
思路:1.定義乙個類實現runnable介面
2.重寫run方法
3.建立類的例項
4.把這個類的例項作為執行緒構造方法的引數傳遞,建立執行緒。
**:
public class myrunnable implements runnable 

}

}
public class myrunnabledemo 

}

有了thread類了,為啥還要用介面runnablene 呢?
1.避免了類繼承的侷限性,
2.通過實現介面只建立了乙個物件,共享資源,使的資料和操作完全分離。
三、執行緒的生命週期
共有建立,就緒,執行,阻塞,死亡。
四、多執行緒出現問題的判斷條件
1.看是否有共享資料
2.看共享資料是否被多次操作
3.看是否在多執行緒中
五、執行緒通訊
概念:不同的執行緒對共享資料操作的問題。
同步關鍵字synchronezed
不同機制的鎖物件
1.同步**塊中的鎖物件可以是任意物件,就是把關鍵字放在方法中
2.同步方法的鎖多象就是this  ,就是把關鍵字放在方法上
3.靜態方法的鎖物件類名.class,就是把關鍵字放在申明上
六、執行緒的死鎖問題
**:
// 定義死鎖物件
public class mylock
// 定義乙個類繼承thread
public class dielock extends thread
public void run() 

}} else

}} }

}
// 定義乙個測試方法
public class dielockdemo 

}

七、加入執行緒
方法:public final void join() 等待該執行緒終止。
前提是:在加入某個執行緒之前,要先啟動這個執行緒
效果: 一旦有join執行緒,那麼當前執行緒就要等待,直到該執行緒結束
八、執行緒優先順序
方法:public final void getpriority() 返回執行緒的優先順序
public final void setpriority(int newpriority)  修改執行緒優先順序
優先順序的方法是1--10.預設優先順序是5
優先順序越高並不代表一定能第乙個搶到執行緒,優先順序可以在某種程度上,讓執行緒獲得較多的執行機會。
九、暫停執行緒
方法: public static void yield() // 暫停當下正在執行的執行緒物件,並執行其他執行緒
什麼時候用?
它可以使執行緒和諧一些,不至於出現成片同一執行緒資料

黑馬程式設計師 多執行緒

windows phone 7手機開發 net培訓 期待與您交流!一 程序與執行緒 l 程序 乙個執行的程式就是乙個程序,程序包括執行中的程式和程式需要用到的記憶體和系統資源 乙個程序至少有乙個執行緒,乙個程序中多個執行緒可以併發執行 l 執行緒 程式中的乙個執行流,每個執行緒都有自己的專有暫存器 ...

黑馬程式設計師 多執行緒

asp.net android io開發 net培訓 期待與您交流!執行緒與程序的關係 乙個程式就相當於乙個程序 乙個程序至少有乙個執行緒 同乙個程序中的多個執行緒之間可以 併發 執行 執行緒 1 乙個執行緒一次只能完成乙個任務 2 多執行緒方法重入 cpu是不斷的在多個執行緒之間來回切換執行的 3...

黑馬程式設計師 多執行緒

asp.net android ios開發 net培訓 期待與您交流!多執行緒為什麼要用多執行緒?1 讓計算機 同時 做多件事情,節約時間。2 後台執行程式,提高程式的執行效率,也不會使主介面出現無響應的情況。3 多執行緒可以讓乙個程式 同時 處理多個事情。4 計算機cpu 大部分時間處於空閒狀態,...