4.線程基礎
4.1計算機中的進程
電腦中,軟件的運行,都會產生一個進程或多個進程與之對應,每一個進程都代表了一組計算機資源的集合,這些計算機資源就是提供給這個軟件在運行的時候使用的。
一個進程中,還可以有一個或多個線程
多線程訪問某個共享資源可能出現線程安全問題,此時可以使用synchronized關鍵字來實現線程同步,
從而避免安全問題出現,但會影響性能,甚至出現死鎖
具體到JVM中的線程,首先線程是有分類的,前臺線程 只有一個叫做main的線程
4.2進程中的線程
進程只能拿到計算機中的資源,並不能執行代碼。而進程中創建出來的線程,就可以執行代碼
從而避免安全問題出現,但會影響性能,甚至出現死鎖
4.3線程中三個重要的組成部分
code cpu date
1.
2.實現Running接口
4.4
4.8 cpu時間片
每一個線程在使用cpu的時候,都只能使用很短的時間,因爲不能讓一個線程把cpu給獨佔了,
cpu是所有程序代碼共享的計算機資源,所以一個線程在使用完後必須把cpu資源讓出去。
4.9 線程狀態
在Thread類中,定義了一個枚舉狀態
TIMED-WAITING "有限期"等待狀態
特點:線程存活
isAlive方法判斷返回的是true
4.10終止線程
可以使用一個標記變量結束
4.11interrupt方法
該方法可以打斷一個線程阻塞的狀態。可以調用Thread【靜態方法】Thread
package com.day46;
public class ThreadTest8 {
public static void main(String[] args) {
Thread t = new Thread() {
@Override
public void run() {
**while(!this.isInterrupted())** {
System.out.println("hello");
/*try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}*/
}
}
};
t.start();
try {
Thread.sleep(000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
interrupted的三種類似方法
//打斷線程阻塞狀態的方法,其實就是改變“打斷標識”
public void interrput(){}