Java Thread.join()是否被视为终止线程?在thread.join()之后运行另一个thread.start()可以吗?

Java Thread.join()是否被视为终止线程?在thread.join()之后运行另一个thread.start()可以吗?,java,multithreading,Java,Multithreading,编辑:我想让一个用户输入停止一个线程,然后另一个用户输入将启动该线程 我有一个noob java问题,我是线程新手,我想知道当我执行Thread.currentThread.join;,然后再次运行同一个线程,它会覆盖我刚刚加入的线程还是会运行一个新线程?我希望我的问题是清楚的 来自: 等待此线程死亡。此实现使用This.wait调用的循环,该循环以This.isAlive为条件。当线程终止时,调用this.notifyAll方法。建议应用程序不要在线程实例上使用wait、notify或noti

编辑:我想让一个用户输入停止一个线程,然后另一个用户输入将启动该线程

我有一个noob java问题,我是线程新手,我想知道当我执行Thread.currentThread.join;,然后再次运行同一个线程,它会覆盖我刚刚加入的线程还是会运行一个新线程?我希望我的问题是清楚的

来自:

等待此线程死亡。此实现使用This.wait调用的循环,该循环以This.isAlive为条件。当线程终止时,调用this.notifyAll方法。建议应用程序不要在线程实例上使用wait、notify或notifyAll

调用线程假定它是主线程,将等待另一个线程t1终止

术语连接可能会产生误导,在这种意义上,没有两个线程的连接,也没有重写

如果您试图终止一个线程,请简单地看一看,不要试图杀死一个线程,而是让它完成它的工作,它将在那之后自然终止,只是要明确一点:t.join对线程t没有任何作用

它所做的唯一事情就是等待线程t终止

当我执行Thread.currentThread.join;,然后再次运行同一个线程,它会覆盖我刚刚加入的线程还是会运行一个新线程

一个线程实例只能启动一次。每次要启动新线程时,必须创建一个新线程实例


…但如果您认为您希望程序不断创建新线程,那么您可能应该阅读。

不,一点也不清楚。当join=等待线程退出当前线程时,您期望得到什么?如何再次运行相同的线程?您可能应该发布一些代码,尝试一下,然后问一个更具体的问题。我只是想手动停止线程,而thread.stop或thread.destroy被认为是个坏主意。我想知道Thread.join是否可以用作线程阻止器看看这里如何终止线程:如果你想知道Thread.join是否可以用作线程阻止器,为什么不问问呢?各州等待此线程死亡。-在您的情况下,当前线程将等待当前线程终止,也就是说,永远不要加入当前线程!你不能重新运行一个线程:多次启动一个线程是不合法的。你必须为代码创建一个新的OneHanks,如果我在t1.join之后;是否将执行t1.start的另一次执行?我不确定再次启动该线程是否会添加新线程。如果要再次执行代码,请使用相同的runnable创建另一个线程。@matt217一个线程可能永远不会启动两次。JavaDoc for Thread.start明确声明:启动线程超过一次是不合法的,有没有办法让线程手动停止?不是让它等待而是彻底摧毁它?我想在用户输入时停止该线程
Thread t1 = new Thread(new MyRunnable(), "t1");
t1.start();
// wait here for t1 to terminate.
t1.join();
// alternatively, you can provide a timeout in ms.
t1.join(1000);