Thread.join() 算不算杀死一个线程?可以在 thread.join() 之后运行另一个 thread.sta



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

我有一个菜鸟Java问题,我是线程的新手,我想知道当我执行Thread.currentThread().join();并再次重新运行同一线程时,它会覆盖我刚刚加入的线程还是会运行一个新线程?我希望我的问题很清楚。

来自 JavDoc:

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

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);

调用线程(假设它是主线程(将等待另一个线程t1终止。

术语连接可能具有误导性,在两个线程的意义上没有连接,也没有覆盖

如果你试图终止一个线程,看看这里(简而言之,不要试图杀死一个线程,而是让它完成它的工作,之后它会自然终止(

只是为了非常清楚:t.join()不会对线程t执行任何操作。

它唯一要做的就是等待线程t终止。


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

一个Thread实例只能start()一次。每次要启动新线程时,都必须创建一个新的Thread实例...


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

最新更新