Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 对多线程概念有点困惑_Java_Multithreading - Fatal编程技术网

Java 对多线程概念有点困惑

Java 对多线程概念有点困惑,java,multithreading,Java,Multithreading,我有几个关于Java多线程的问题。我目前正在学习不同的多线程方法。我的第一个问题是,当线程中的代码运行完毕后,线程会发生什么情况?我需要停止/终止线程吗?我目前正在为每个线程创建一个类,并在每个类中实现Runnable。然后,我使用newthreadclass();;在主类中启动线程

我有几个关于Java多线程的问题。我目前正在学习不同的多线程方法。我的第一个问题是,当线程中的代码运行完毕后,线程会发生什么情况?我需要停止/终止线程吗?我目前正在为每个线程创建一个类,并在每个类中实现Runnable。然后,我使用
newthreadclass();;在主类中启动线程new ThreadClass()
,这两个线程都名为“second”吗?谢谢

我的第一个问题是,当线程中的代码运行完毕后,线程会发生什么情况?我需要停止/终止线程吗

线程在无事可做时停止。如果您有ExecutorService,则必须在完成后使用shutdown

如果我在main方法中添加两次新的ThreadClass(),两个线程是否都命名为“second”

您正在使代码相同。这并不意味着线程的名称必须相同(反之亦然)

我想你的意思是,而不是
ThreadClass

当线程的
run
方法返回时,线程将停止。如果只在第二个线程中指定名称,则只有该线程的名称为“second”。第一个线程不受影响


如果可能的话,您应该避免调用,因为它不允许线程干净地退出。

多线程是一个让我怀疑的大多数人感到困惑的话题。;)@可悲的感谢你的纠正。看起来不对,但单词拼写正确(好吧,名称不是自动相同吗?我的ThreadClass构造函数看起来是这样的:
public class ThreadClass实现Runnable{Thread second;public ThreadClass(){second=新线程(这是“第二个线程”);second.start();}
,只有在“自动”的情况下给它一个相同的名称。在这种情况下,你会有两个同名的线程运行不同的对象。我建议给不同的线程,不同的名称,这样你就知道在堆栈跟踪和调试中哪个是哪个。如果我只使用一个线程类,我该如何更改名称?线程类构造函数运行second.start,它会创建一个阅读命名秒。不,我是指ThreadClass。这是创建新线程的类的名称。请看我在上一个答案上的注释。