2013-01-07 166 views
2

我有幾個關於Java多線程的問題。我目前正在學習不同的多線程方法。我的第一個問題是,線程中的代碼在運行後會發生什麼?我需要停止/殺死線程嗎?我目前正在爲每個線程製作一個類,並在每個類中實現Runnable。然後,我使用new ThreadClass();.在主類中啓動線程。在Thread類的構造函數中,我將它設置爲創建一個名爲「second」的Thread。如果我在主方法中添加了兩次new ThreadClass(),那麼這兩個線程都被命名爲「second」?謝謝。對多線程概念有點困惑

+2

多線程是混淆了我懷疑的大多數人的話題。 ;) –

回答

3

我的第一個問題是,線程在代碼完成運行後會發生什麼?我需要停止/殺死線程嗎?

當線程無關時停止線程。如果你有一個ExecutorService,你必須在完成之後使用shutdown。

如果我在主方法中添加兩次新的ThreadClass(),兩個線程都被命名爲「second」?

您正在使代碼相同。這並不意味着線程的名稱必須相同(反之亦然)

+0

@MisrableVariable感謝您的更正。它看起來不正確,但拼寫正確。 ( –

+0

那麼這個名字會不會自動相同?我的ThreadClass構造函數看起來像這樣:'public class ThreadClass implements Runnable { ; second.start(); }' – user1947236

+0

只有當你自動地給它同名的時候,你會有兩個同名的線程運行不同的對象,我建議給出不同的線程,知道哪些是堆棧跟蹤和調試 –

0

我假設你的意思是Thread而不是ThreadClass

當線程的run方法返回時,線程將停止。如果您只在第二個線程中指定名稱,那麼只有該線程將具有「第二個」名稱。第一個線程不受影響。

如果可能,應該儘量不要撥打stop,因爲它不允許線程乾淨地退出。

+0

不,我的意思是ThreadClass。 c的名字lass創建新線程。看看我對上一個答案的評論。 – user1947236