我正在使用JMP库(http://ants.inf.um.es/staff/jlaguna/jmp/javadoc/),我想知道如何创建两个打印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);
}
}
但它没有用。
答案 0 :(得分:0)
两个进程首先尝试接收,然后发送,这会导致死锁。 在其中一个过程中交换发送和接收的顺序。