1. 程式人生 > >線程小結一

線程小結一

什麽 註意事項 之間 怎麽 意義 () ext read extends

一、進程與線程

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]

優先級的值越大 就越先執行完畢

線程小結一