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

时间:2015-11-18 22:18:11

标签: java concurrency process parallel-processing main

我需要按照以下方式沟通各种流程:

首先,我使用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()同时启动并同时发送消息

感谢。

2 个答案:

答案 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会在或多或少同时开始执行逻辑(不确定同步是)