进程间通讯有三种常用方式:
1)管道
2)共享内存
3)socket
Socket可以用于不同机器间的进程通信,但代价比较高
java没有共享内存方式,同时Java的管道也只能用于Java线程间的通讯
Java提供管道功能,实现管道通信的类有两组:PipedInputStream和PipedOutputStream或者是PipedReader和PipedWriter。管道通信主要用于不同线程间的通信。
一个PipedInputStream实例对象必须和一个PipedOutputStream实例对象进行连接而产生一个通信管道。PipedOutputStream向管道中写入数据,PipedIntputStream读取PipedOutputStream向管道中写入的数据。一个线程的PipedInputStream对象能够从另外一个线程的PipedOutputStream对象中读取数据。
通过管道实现Java进程间通信方式:
管道实际上就是一个file结构和一个VFS的索引。Java通过直接读写这个文件,实现pipe通讯效果:
首先要创建一个管道文件,这一点Java 做不到,要借助C/C++中的mkfifo()函数来实现。
Java中,使用文件读写的方式打开这两个文件,即可进行读写。