gpt4 book ai didi

java - 如何一一停止线程类的多个实例?

转载 作者:行者123 更新时间:2023-12-01 13:36:34 24 4
gpt4 key购买 nike

我有一个 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com