存在兩種方法來確定線程是否已完成。首先,您可以在線索上致電isAlive()
。此方法由Thread
定義,其一般形式如下:如果在調用它的線程仍在運行isalive vs加入JAVA主題
final boolean isAlive()
的isAlive()
方法返回true。否則返回false。雖然isAlive()
偶爾是有用的,您將更常用於等待線程完成的方法稱爲join()
isAlive()
vs join()
。優點?
存在兩種方法來確定線程是否已完成。首先,您可以在線索上致電isAlive()
。此方法由Thread
定義,其一般形式如下:如果在調用它的線程仍在運行isalive vs加入JAVA主題
final boolean isAlive()
的isAlive()
方法返回true。否則返回false。雖然isAlive()
偶爾是有用的,您將更常用於等待線程完成的方法稱爲join()
isAlive()
vs join()
。優點?
如果你想阻塞直到線程完成,然後使用join()。否則 - 你決定。
如果你的邏輯不阻止等待線程,那麼我認爲更清晰的代碼看起來將用isAlive()來實現。看看你的代碼,看看更好看。
雙重否定發現。 – UmNyobe
@UmNyobe,好點,謝謝 – akostadinov
如果調用它的線程仍在運行,則isAlive()方法返回true。
這是不完全正確 - public final boolean isAlive()
測試線程是否還活着。線程還活着如果它已經啓動並且還沒有死亡。
這意味着,你可以從isAlive
得到false
如果線程尚未開始而「加入」將等待其返回前開始和完成。
另外,如果線程在isAlive())調用以'true'返回時死亡,會發生什麼? –
從評論中,我瞭解到isAlive()和join()是沒有關係的,應根據需要使用。 – Upen
@Upen是的,他們沒有關係。 –