線程小結一
一、進程與線程
1.什麽是進程: 正在運行的程序(正在運行的一大段代碼)
程序: 一段代碼
什麽是線程:
1.正在運行的一小段代碼
2.1個進程至少有1個線程
在我們計算機中,運行了很多程序,但是對於電腦來說,它只看到很多的線程,它只是來回頻繁切換讀取線程中的內容
我們是控制不了cpu的執行線程順序,因為執行順序,完全取決於cpu
cpu以線程為單位來回進行頻繁切換
在同一時間片上,1個cpu只能執行1個線程
時間片:一個很微觀的時間,比毫秒還要短的時間
2.怎麽去創建線程對象
1.繼承
class 類 extends Thread{
public void run(){
線程的主體
}
}
//創建線程對象
類 l = new 類();
//啟動線程
l.start();
2.實現Runnable接口
class 類 implements Runnable{
public void run(){
線程主體
}
}
類 l = new 類();
//線程對象
Thread t1 = new Thread(l);
Thread t2 = new Thread(l);
Thread t3 = new Thread(l);
t1.start();
t2.start();
t3.start();
3.Thread類的結構
1.run方法 線程的主體,我們把核心代碼放到run方法內部
2.start方法 啟動一個線程,讓線程處於一個活躍狀態,擁有獲取cpu的執行權利
4.主方法一共有多少個線程
嚴格意義來說:
1.主線程
2.垃圾回收線程(一般我們不考慮垃圾回收線程)
5.線程的註意事項:
1.調用run方法和調用start方法的區別:
調用run方法,它是不會啟動一個獨立的線程,它僅僅只是一個普通方法的調用
調用start方法,它會開啟一個獨立的線程,讓該線程處於活躍狀態,可以擁有獲取cpu的執行權利
2.自己啟動的線程和主線程有關系嗎
答:沒有任何關系,創建的線程和它的環境線程是沒有任何關系的。一旦創建好了之後,它就是一個獨立的線程
6.創建線程2種方式,它們有什麽區別呢?
1.繼承: 它有局限性,因為類與類之間是繼承關系,並且只能是單繼承
2.實現: 它擴展性較強,因為類與接口之間是實現關系,並且是多實現,既能保留原有的業務邏輯,也可以對功能進行擴展
7.sleep 休眠, 休眠指定的時間,在這段時間中,它放棄cpu的執行權利,當休眠時間已過,該線程又處於活躍狀態,又擁有了獲取cpu的執行權利
8.優先級:
1.主線程的默認優先級是5
2.自定義線程默認的優先級是和當前環境線程的優先級一致
優先級範圍:[1,10]
優先級的值越大 就越先執行完畢
線程小結一