我需要按照以下方式沟通各种流程:
首先,我使用args [0] = 1调用GeneralMain,因此它将调用A.main()。
剩下的两个进程将在一个随机时间的空间内启动,但两个进程都需要同时启动。
我的代码:
public class GeneralMain {
public static void main(String[] args) {
int num_proc = Integer.parseInt(args[0]);
switch (num_proc) {
case 1:
A.main(...);
break;
case 2:
B.main(...);
break;
case 3:
C.main(...);
break;
default:
break;
}
}
}
首先,GeneralMain收到args [0] = 1,然后调用 A.main(); 。
所以,我执行了GeneralMain三次。在第一次启动A.main()并负责接收消息时,我执行启动B.main()进程的GeneralMain并将第一条消息发送给A.要结束,我执行启动C.main的GeneralMain。 ()处理并将第二条消息发送给A,但我需要B.main()和C.main()同时启动并同时发送消息
感谢。
答案 0 :(得分:0)
您可能会考虑使用线程和可运行的线程。
从main开始你可以启动A然后使用随机时间开始2个线程,它们都会启动。一个线程调用B,另一个调用C。
答案 1 :(得分:0)
您可以使用循环屏障来确保B和C同时开始执行其逻辑。
CyclicBarrier cyclicBarrier = new CyclicBarrier(2); //global scope
B { //thread B's main
cyclicBarrier.await(); //wait for other thread
}
C { //thread C's main
cyclicBarrier.await(); //wait for other thread
}
基本上B和C都会在屏障处注册,一旦注册方数量达到2,屏障就会跳闸,B和C会在或多或少同时开始执行逻辑(不确定同步是)