基礎題
問題:請描述thread類中的
start()方法與run()方法的區別。
答:執行緒物件呼叫run()方法不開啟執行緒,僅是物件呼叫方法。執行緒物件呼叫start()方法開啟執行緒,並讓jvm呼叫
run()方法在開啟的執行緒中執行。
問題:請描述建立執行緒的兩種方式。
答:第一種方式是將類宣告為 thread 的子類。
定義thread類的子類,並重寫該類的run()方法,該run()方法的方法體就代表了執行緒需要完成的任務,因此把run()方法稱為執行緒執行體。
建立thread子類的例項,即建立了執行緒物件。
呼叫執行緒物件的start()方法來啟動該執行緒。
第二種方式是宣告乙個類實現runnable 介面。
1. 定義
runnable
介面的實現類,並重寫該介面的
run()
方法,該
run()
方法的方法體同樣是該執行緒的執行緒執行體。
2. 建立
runnable
實現類的例項,並以此例項作為
thread
的target
來建立thread
物件,thread
物件才是真正的執行緒物件。
3. 呼叫執行緒物件的
start()
方法來啟動執行緒。
問題:請編寫程式,分別列印主線程的名稱和子執行緒的名稱。
要求使用兩種方式實現:
第一種方式:繼承thread類。
第二種方法:實現runnable介面。
答:操作步驟描述
第一種方式:繼承thread類
1.定義乙個子執行緒的類,繼承
thread
類;2.在子執行緒類中重寫
run方法,在
run方法中列印子執行緒的名稱;
3.定義乙個測試類;
4.在main
方法中列印主線程的名稱;
5.在main
方法中建立子執行緒物件;
6.呼叫子執行緒物件的
start
方法,開啟子執行緒;
第二種方式:實現runnable介面
1.定義乙個子任務類,實現
runnable
介面;2.在子任務類中重寫
run方法,在
run方法中列印子執行緒的名稱;
3.定義乙個測試類;
4.在main
方法中列印主線程的名稱;
5.在main
方法中建立乙個子任務物件;
6.在main
方法中建立乙個
thread
類的物件,並把子任務物件傳遞給
thread
類的構造方法;
7.呼叫
thread
類物件的
start
方法開啟子執行緒;
操作步驟答案
l第一種方式:繼承thread類
/** 1.
定義乙個子執行緒的類,繼承
thread
類;*/
public class subthread extends thread}
/** 3.
定義乙個測試類
*/
public class threaddemo}
第二種方式:實現runnable介面
/** 1.
定義乙個子任務類,實現
runnable
介面。*/
public class subrunnable implements runnable}
/** 3.
定義乙個測試類。
*/
public class runnabledemo}
問題:請描述實現runnable介面比繼承
thread
類所具有的優勢:
答:1. 適合多個相同的程式**的執行緒去共享同乙個資源。
2. 可以避免
j**a
中的單繼承的侷限性。
3. 增加程式的健壯性,實現解耦操作,**可以被多個執行緒共享,**和資料獨立。
4. 執行緒池只能放入實現
runable
或callable
類執行緒,不能直接放入繼承
thread
的類。有幾種狀態呢 ?
答:new(新建
) 執行緒剛被建立,但是並未啟動。
runnable(可執行
)執行緒可以在j**a虛擬機器中執行的狀態,可能正在執行自己**,也可能沒有,這取決於作業系統處理器。
blocked(鎖阻塞
)當乙個執行緒試圖獲取乙個物件鎖,而該物件鎖被其他的執行緒持有,則該執行緒進入blocked狀態;當該執行緒持有鎖時,該執行緒將變成
runnable
狀態。waiting(無限等待
)乙個執行緒在等待另乙個執行緒執行乙個(喚醒)動作時,該執行緒進入waiting狀態。進入這個狀態後是不能自動喚醒的,必須等待另乙個執行緒呼叫
notify
或者notifyall
方法才能夠喚醒。
timed waiting(計時等待
)同waiting狀態,有幾個方法有超時引數,呼叫他們將進入
timed waiting
狀態。這一狀態將一直保持到超時期滿或者接收到喚醒通知。帶有超時引數的常用方法有
thread.sleep
、object.wait
。teminated(被終止
)因為run方法正常退出而死亡,或者因為沒有捕獲的異常終止了
run方法而死亡。
python習題及答案
判斷101 200之間有多少個素數,並輸出所有素數 素數是除了1和它本身以外都不能被整除的數 l for i in range 101,200 for j in range 2,i 1 if i j 0 break else print l 列印出所有的 水仙花數 所謂 水仙花數 是指乙個三位數,其...
Java Map集合習題答案
一 請簡述map 的特點。map每個元素由鍵與值兩部分組成 map鍵不能重複,每個鍵對應乙個值 鍵和值可以為null 二 說出entry鍵值對物件遍歷map集合的原理。map中存放的是兩種物件,一種稱為key 鍵 一種稱為value 值 它們在在map中是一一對應關係,這一對物件又稱做map 中的乙...
數學建模習題答案
1.建模過程 將材料1,3做成丙產品會虧本,將材料2做成丙產品不會賺錢,故不做丙產品。並且可以看出材料1最貴,材料2最便宜,故盡可能多用材料2,少用材料1.故產品甲用 50的材料1,25的材料2,25的材料3.產品乙用 25的材料1,50的材料2,25的材料3。2.變數說明 將x1,x2分別設為產品...