Java 多线程 - 2 - 进程间通信方式

本文详细介绍了Java多线程环境下进程间通信的六种方式:管道、消息队列、共享存储、信号量、套接字和信号。包括各自的特点、应用场景及使用方法,如管道的半双工特性、消息队列的随机查询能力、共享内存的高效通信以及信号量在同步中的作用等。
摘要由CSDN通过智能技术生成

进程间通信(IPC,InterProcess Communication)是指在不同进程之间传播或交换信息。
IPC 对象的持续性分为三种:随进程,随内核和随文件系统

  • 随进程持续的 IPC 对象:一直存在到打开着 IPC 对象的最后一个进程关闭该对象为止,管道、FIFO 随进程
  • 随内核持续的 IPC 对象:一直存在到内核重新自举或者显示删除 IPC 对象为止,Posix 消息队列随内核
  • 随文件系统:一直存在到显示删除IPC对象为止

1. 管道

管道分为 PIPE(无名管道)和 FIFO(命名管道)两种,除了建立、打开、删除的方式不同外,这两种管道几乎是一样的。他们都是通过内核缓冲区实现数据传输。

PIPE 用于相关进程之间的通信,例如父进程和子进程,它通过 pipe() 系统调用来创建并打开,当最后一个使用它的进程关闭对他的引用时,PIPE 将自动撤销。

  1. 管道是半双工的,数据只能向一个方向流动;需要双方通信时,需要建立起两个管道;
  2. 匿名管道只能用于父子进程或者兄弟进程之间(具有亲缘关系的进程);
  3. 单独构成一种独立的文件系统:管道对于管道两端的进程而言,就是一个文件,但它不是普通的文件,它不属于某种文件系统,而是自立门户,单独构成一种文件系统,并且只存在与内存中。

FIFO 即命名管道,在磁盘上有对应的节点,但没有数据块——换言之,只是拥有一个名字和相应的访问权限,通过 mknode() 系

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老高的IT职业路

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值