我有一个 Java Thread 工作线程类,它被启动了多次(假设有 10 个实例)。现在我想按照它们创建的顺序逐个停止这些正在运行的线程(首先)。所有这些线程对象都存储在 ArrayList 中。有人可以帮忙吗。
提前致谢 李
最佳答案
Thread.join()
方法用于相同目的。 Docs here .
假设您有线程 T1、T2 和 T3。
要在 T2 之前完成 T3、在 T1 之前完成 t2,您需要从 T1 调用 T2.join() 并从 T2 调用 T3.join()。你可以做如下的事情 -
public class ThreadSync extends Thread {
Thread waitForThread;
public void setWaitForThread(Thread waitForThread) {
this.waitForThread = waitForThread;
}
@Override
public void run() {
try {
System.out.println(Thread.currentThread().getName() + " Thread Started");
if(waitForThread != null)
waitForThread.join();
System.out.println(Thread.currentThread().getName() + " Thread Terminating");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
public static void main(String args[]){
Thread t1 = new ThreadSync();
t1.setName("T1");
Thread t2 = new ThreadSync();
t2.setName("T2");
Thread t3 = new ThreadSync();
t3.setName("T3");
((ThreadSync)t3).setWaitForThread(t2);
((ThreadSync)t2).setWaitForThread(t1);
t1.start();
t2.start();
t3.start();
}
}
输出为
T1 Thread Started
T3 Thread Started
T2 Thread Started
T1 Thread Terminating
T2 Thread Terminating
T3 Thread Terminating
关于java - 如何一一停止线程类的多个实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21229178/