java linuc进程间通信对比

本文探讨了在Java中如何实现进程间的通信机制,包括管道、消息队列、信号量和共享内存等,并提供了具体的代码示例进行说明。同时,还对比了C语言中的相应实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

读《unix网络编程第二卷进程通信》
1.管道
2.消息队列
3.信号量
4.共享内存
这些在java中怎么实现?
如果是管道,参考http://www.iteye.com/topic/156804,看下面代码,
注意把“注意这里!!!!!!!!”的i换成256实验一下效果
import java.io.IOException;
import java.io.PipedInputStream;
import java.io.PipedOutputStream;
public class CommunicateWhitPiping {
public static void main(String[] args) {
PipedOutputStream pos = new PipedOutputStream();
PipedInputStream pis = new PipedInputStream();
try {
pos.connect(pis);//将管道输入流与输出流连接 此过程也可通过重载的构造函数来实现
} catch (IOException e) {
e.printStackTrace();
}
Producer p = new Producer(pos);//创建生产者线程
Consumer c = new Consumer(pis);//创建消费者线程
p.start();//启动线程
c.start();
}
}
class Producer extends Thread {//生产者线程(与一个管道输入流相关联)
private PipedOutputStream pos;
public Producer(PipedOutputStream pos) {
this.pos = pos;
}
public void run() {
int i = 99;//256,257,注意这里!!!!!!!!
try {
pos.write(i);
} catch (IOException e) {
e.printStackTrace();
}
}
}
class Consumer extends Thread {//消费者线程(与一个管道输入流相关联)
private PipedInputStream pis;
public Consumer(PipedInputStream pis) {
this.pis = pis;
}
public void run() {
try {
System.out.println(pis.read());
} catch (IOException e) {
e.printStackTrace();
}
}
}

如果是c里面
看unpv22e/pipe/mainpipe.c
#include    "unpipc.h"
void client(int, int), server(int, int);
int
main(int argc, char **argv)
{
int pipe1[2], pipe2[2];
pid_t childpid;
Pipe(pipe1); /* create two pipes */
Pipe(pipe2);
if ( (childpid = Fork()) == 0) { /* child */
Close(pipe1[1]);
Close(pipe2[0]);

server(pipe1[0], pipe2[1]);
exit(0);
}
/* 4parent */
Close(pipe1[0]);
Close(pipe2[1]);
client(pipe2[0], pipe1[1]);
Waitpid(childpid, NULL, 0); /* wait for child to terminate */
exit(0);
}

-------------------------------------
共享内存参考http://coach.iteye.com/blog/738214
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值