进程之间的通信(主要)Java



我需要按照如下方式进行各种流程的通信:

首先,我用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()进程并将第一条消息发送给A的GeneralMain。最后,我执行启动C.main()过程并将第二条消息发送到A的GeneralMain,但我需要B.main(

谢谢。

您可以考虑使用线程和可运行程序。

从main,您可以启动A,然后使用随机时间启动2个线程,在该时间它们都将启动。一个线程调用B,另一个调用C。

您可以使用循环屏障来确保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将或多或少地同时开始执行他们的逻辑(不确定同步有多精确)

相关内容

  • 没有找到相关文章