join方法:執行該方法的執行緒進入阻塞狀態,直到呼叫該方法的執行緒結束後再由阻塞轉為就緒狀態。
package com.zzu.test;
public
class
join
}class
testthread1
extends
thread
@override
public
void
run(
)catch
(interruptedexception e)
if(flag)
catch
(interruptedexception e)}}
}}class
testthread2
extends
thread
catch
(interruptedexception e)}}
}
執行結果:
因為執行緒1的sleep時間為5秒而執行緒2的sleep時間為6秒,從執行結果中我們了解到執行緒1在執行一次後就在等待執行緒2執行了,所以得出結論執行緒1在第一次執行後就進入到了阻塞狀態,直至執行緒2執行結束執行緒1才被喚醒,
注意:執行緒物件在呼叫join方法前必須先呼叫start方法,否則該執行緒永遠不會進入執行狀態。
interrupt方法:結束執行緒在呼叫object類的wait方法或該類的join方法、sleep方法過程中的阻塞狀態,並在呼叫wait、join和sleep方法處產生interruptedexception異常。
package com.zzu.test;
public
class
interrupt
catch
(interruptedexception e)
thread.
interrupt()
;}}class
time
implements
runnable
catch
(interruptedexception e)
system.err.
println
("time執行緒執行完畢");
}}
執行結果:
currentthread方法:返回當前正在執行的執行緒物件。
public
class
currentthread
}
執行結果:
當前執行緒為main執行緒,我們檢視currentthread方法的底層**,搜尋tostring得到:
public string tostring() else
}
發現第乙個main為執行緒名,第二個main為執行緒組名。
isalive方法:判定該執行緒是否處於就緒、執行或阻塞狀態,如果是則返回true,否則返回false。
public
class
isalive
}class
timethread1
extends
thread
@override
public
void
run(
)catch
(interruptedexception e)
system.out.
println
(thread.
isalive()
);//判斷main執行緒是否活著
}}
首先timethread執行緒開始執行,第一次判斷main執行緒是否活著,此時main執行緒還未結束,所以輸出true。第二次判斷main執行緒是否活著,此時timethread執行緒已經睡眠了1秒,main執行緒顯然完成,所以輸出false。
public
class
daemon
}class
timethread2
extends
thread
}}
執行結果:
發現timethread2執行緒中run方法中的輸出語句為死迴圈輸出,但是並沒有無限執行,得出結論時間執行緒開始直至所有的非守護執行緒結束,所有的守護執行緒跟著強制結束。
執行緒常用方法
package test 執行緒常用的方法 thread string name 初始化執行緒的名字 setname string name 設定執行緒物件名 getname 返回執行緒的名字 sleep 執行緒睡眠指定的毫秒數。靜態的方法,在哪個執行緒中執行了sleep方法 那麼就是哪個執行緒睡眠...
執行緒1 執行緒常用方法
1 執行緒方法 1 start 啟動執行緒,並進入就緒狀態,隨時等待執行 2 run 重寫的方法,開始執行執行緒 3 currentthread 呼叫當前執行緒 4 getname 獲取執行緒名字 5 setname 設定執行緒名字 6 yield 呼叫此方法的執行緒,釋放當前cpu的執行權,cpu...
執行緒常用的方法
執行緒常用的方法 thread string name 初始化執行緒的名字 setname string name 設定執行緒物件名 getname 返回執行緒的名字 static sleep 那個執行緒執行了sleep的 那麼該執行緒就會睡眠指定毫秒數。currentthread 返回當前執行該方...