gpt4 book ai didi

java - JAVA中唯一标识终止的线程

转载 作者:行者123 更新时间:2023-12-02 08:57:25 26 4
gpt4 key购买 nike

假设我有一个名为 USERS 的列表,其中包含 USER1 和 USER2。一次最大线程数可以是USERS的大小。在本例中为 2。创建的线程将与用户同名

我有另一个包含一些值的列表。在这种情况下,假设我们有

List<String> values = new ArrayList<>();
values.add("A");values.add("B");values.add("C");values.add("D");

USER1 和 USER2 必须从“值”中选取数据。

所以我们启动线程,最大线程数可以是USERS的大小,即2。

我们启动两个线程,并为它们分配“值”列表中的前两个值。

所以现在 USER1--has--> A 和 USER2--has--> B。

现在,USER2 线程完成,而 USER1 仍在运行。

由于 USER2 已完成。我再次需要创建一个新线程来处理“值”中的剩余数据。

那么我应该如何知道 USER2 线程已完成并创建一个名为 USER2 的新线程。

最佳答案

how am I supposed to know that USER2 thread has finished

1。您需要您的线程向某人报告其终止。有人会是,

interface ThreadListener {
void onThreadTerminated(String threadName);
}

2。现在创建您的线程,例如当它终止时,它会向 ThreadListener 报告其状态。

class MyThread extends Thread {
private ThreadListener listener;

MyThread(ThreadListener listener) {
this.listener = listener;
}

public void run() {
System.out.println(getName() + " starting execution.");
doWork();
listener.onThreadTerminated(getName());
}

public void doWork(){
try {
Thread.sleep(1500);
} catch (Exception e) {}
}
}

3。最后你需要线程状态的涉众的具体实现,

class Listener implements ThreadListener {

public void onThreadTerminated(String threadName) {
System.out.println(threadName + " finished execution");
}
}

4。在您的程序中使用它并应用您自己的逻辑,

public static void main(String[] args) {
Listener l = new Listener();
MyThread t = new MyThread(l);
t.setName("MyThread");
t.start();
}

输出,

MyThread开始执行。

MyThread 完成执行(1.5 秒后)

关于java - JAVA中唯一标识终止的线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60412063/

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