2013-01-07 176 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