【问题标题】:Message Passing in Java with Channels, send, receive在 Java 中使用 Channels 传递消息,发送,接收
【发布时间】:2014-05-04 16:49:05
【问题描述】:

我正在使用 JMP 库 (http://ants.inf.um.es/staff/jlaguna/jmp/javadoc/),我想知道如何创建 2 个线程来打印 Char 并等待另一个线程打印他的(通过向他发送消息)。

结果应该是这样的:

Main(){
ThreadB();
ThreadC();
}

Output:
B
C
B
C
... 

这就是我所做的:

import messagepassing.Channel;

public class Main3 {

    static Channel canalBC = new Channel();
    static Channel canalCB = new Channel();


    public static void procesoB(final Channel canalBC, final Channel canalCB){
        Thread thCliente = new Thread(new Runnable () {
             @Override public void run (){
                for(int i=0;i<=5;i++){
                canalCB.receive();  
                System.out.println("B");
                canalBC.send(1);
                }
          }
         } , "A");
         thCliente.start();
    }
    public static void procesoC(final Channel canalBC, final Channel canalCB){
        Thread thCliente = new Thread(new Runnable () {
             @Override public void run (){
                for(int i=0;i<=5;i++){
                canalBC.receive();
                System.out.println("C");
                canalCB.send(1);
                }
          }
         } , "A");
         thCliente.start();
    }
    public static void main(String[] args) {
            canalCB.send(1);// Printing the first B
        procesoB(canalBC,canalCB);
        procesoC(canalBC,canalCB);
    }
}

但它不起作用。

【问题讨论】:

  • 那个 API 是西班牙语...

标签: java channel message-passing


【解决方案1】:

两个进程都尝试先接收,然后发送,这会导致死锁。 在其中一个进程中交换发送和接收的顺序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-26
    • 2015-01-07
    • 1970-01-01
    • 1970-01-01
    • 2018-07-29
    • 1970-01-01
    • 2020-04-20
    相关资源
    最近更新 更多