编辑:我想让用户输入停止线程,然后另一个用户输入将启动线程。
我有一个菜鸟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
实例...
。但是,如果您认为希望程序不断创建新线程,那么您可能应该阅读线程池。