gpt4 book ai didi

java - run() 方法和其他类方法(java 线程)之间的通信

转载 作者:行者123 更新时间:2023-12-01 04:37:25 25 4
gpt4 key购买 nike

我有任务要做,但我有点卡住了。我必须提供 4 项服务(A、B、C、D)。每个服务都应该有自己的线程。他们应该按顺序启动并运行。如果服务A启动,则可以启动服务B,如果服务B启动,如果服务C启动,则可以启动服务D。我设法创建服务及其线程,但我不知道应该如何在start()和priority()方法之间创建通信在 PriorityService 类中。我想检查服务(线程)A 是否还活着,如果是的话我想从列表中移动到第二个服务,依此类推。那可能吗?您对于如何编写服务依赖项还有其他想法吗?任何建议都是有用的。 Tnx。

这是我的代码:

import java.util.*;

class CreateThread extends Thread{
private String thread_name;
public int numb;
public CreateThread(String thread_name, int i){
this.thread_name=thread_name;
System.out.println("Thread " + thread_name + " has started.");
i=numb;
}
public void run(){
try{
Thread t = Thread.currentThread();
System.out.println(thread_name + " status = " + t.getState());
System.out.println(thread_name + " status = " + t.isAlive());
t.join();
}catch(Exception e){
System.out.println(e);
}

}
}

class PriorityService extends ArrayList<Service> {
public void priority()
{
int i=0;
while(i<size()){
System.out.println("evo me"+ get(i).service_name);
if(get(i).service_name=="Service A")
get(i).StartService(get(i).service_name, get(i).thread_name, i);
i++;
}
}
}

public class Service {
public String service_name;
public String thread_name;

public Service(String service_name, String thread_name){
this.service_name=service_name;
this.thread_name=thread_name;
}

public void StartService(String service_name, String thread_name, int i) {
System.out.println("Service " + service_name + " has started.");
Thread t=new Thread(new CreateThread(thread_name, i));
t.start();
}

public void StopService() {}
public static void main (String[] args){
PriorityService p_s=new PriorityService();
Service service_A = new Service("Service A", "Thread A");
Service service_B = new Service("Service B", "Thread B");
Service service_C = new Service("Service C", "Thread C");
Service service_D = new Service("Service D", "Thread D");
p_s.add(service_A);
p_s.add(service_B);
p_s.add(service_C);
p_s.add(service_D);
p_s.priority();

for(Service s: p_s)
System.out.println(s.service_name);

}
}

最佳答案

如果您为每个服务创建不同的线程,那么您无法控制线程的执行(例如通过设置其优先级等)。优先级只是操作系统的一个指标,并不能保证优先级高的线程先运行。

唯一可以通过使用 wait、notify、join 等进行线程间通信来实现此目的的方法。

但我认为,如果您遇到解决方案,请为服务 A、B、C 和 D 的一个组合创建单独的线程。

关于java - run() 方法和其他类方法(java 线程)之间的通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17150145/

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