java線程與並發編程實踐(一)
線程就是一條在程序代碼中獨立執行的路徑
二、給出runnable的定義
一個runnable就是一段封裝在對象中的代碼序列,它的類實現了runnable接口
三、Thread類和runnable接口完成了什麽?
類Thread提供了一個底層操作系統的線程架構的統一接口。Runnable接口為關聯了Thread對象的線程提供了執行代碼。
四、指出創建一個Runnable對象的兩種方式?
創建一個實現Runnable接口的匿名類或者lambda表達式
Runnable r = new Runnable() { //匿名類,實現Runnable接口 @Override public void run() { System.out.println("MyThread"); } };
Runnable r = () -> System.out.println("MyThread"); //lambda表達式
五、指出關聯一個runnable到一個Thread對象的兩種方式?
a.把一個runnable對象傳入到Thread的構造器中
b.繼承Thread類重寫它的run()方法,因為Thread類也實現了runnbale接口
六、指出5種Thread的狀態
線程名稱、線程存活的標識、線程的執行狀態、線程的優先級、線程是否為守護線程
七、默認線程的名字會以Thd-作為前綴嗎?
不對,以Thread-作為前綴
八、如何給線程賦予非默認的名稱?
可以通過Thread的構造函數進行傳入,也可以調用setName()方法,指定名稱
九、如何確定線程是死是活?
使用isAlive()方法判斷
十、指出Thread.State枚舉的常量
NEW:該狀態下線程還沒有開始執行
RUNNABLE:該狀態下線程正在JVM中執行
BLOCKED:該狀態下線程被阻塞,正在等待一個監聽鎖
WAITING:該狀態下線程無限制的等待另外一個線程執行特定的操作
TERMINATED:該狀態下線程已經退出
十一、如何獲取當前線程的執行狀態
調用Thread.State或者調用getState()方法
十二、優先級的定義
優先級是指,線程的相對重要性
十三、如何通過setPriority()來影響應用程序跨操作系統的可移植性?
使用setPriority()會影響應用程序在操作系統之間的可移植性,因為不同的調度器會采用不同的方式來處理優先級
十四、確定Thread的void setPriority(int priority)參數的取值範圍
介於Thread.MIN_PRIORITY和Thread.MAX_PRIORITY之間
十五、當應用程序的最後一個非守護線程死亡之後,守護線程也會自動死亡以使得應用程序退出
正確
十六、在一個正在運行或者已經死亡的Thread對象上調用Thread的void start()方法會發生什麽?
會拋出java.lang.IllegalThreadStateException
十七、如何終止windows上一個無法停止的程序
ctrl+c
十八、組成Thread中斷機制的所有方法
interrupt()
interrupted()
isInterrupted()
十九、isInterrupted()方法清除了線程的中斷狀態
錯誤,不影響
二十、當線程中斷時,該線程如何反映?
拋出InterruptedException
二十一、給出忙循環的定義
設計來消耗時間的一條循環語句
二十二、指出讓一條線程等待另一個線程直至死亡的方法
join()
二十三、指出讓一條線程睡眠的Thread方法
sleep()
二十四、編寫一個名為IntSleep的應用程序,其創建一條後臺線程,不斷地打印出Hello,之後睡眠100ms。在睡眠了2s之後,默認主線程應該中斷後臺線程,此線程在打印出interrupted之後跳出循環
public class IntSleep { public static void main(String[] args) { Runnable r = new Runnable() { @Override public void run() { while(true) { System.out.println("Hello"); try { Thread.sleep(100); } catch (InterruptedException e) { System.out.println("Interrupted"); break; } } } }; Thread t = new Thread(r); t.start(); try { Thread.sleep(2000); } catch (InterruptedException e) { } t.interrupt(); } }
java線程與並發編程實踐(一)