iKuai爱快流控路由

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1927|回复: 0
打印 上一主题 下一主题

[爱快技术] Java线程之间通信方式

[复制链接]
跳转到指定楼层
楼主
发表于 2020-1-2 17:57:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 爱快技术支持05 于 2020-1-2 18:08 编辑

通信方式:
    1.同步
        a.同步是指多个线程之间通过synchronize关键字这种方式来实现线程间的通讯。
        b.这种方式本质上就是共享内存式的通讯。多个线程需要访问同一个共享变量,谁拿到了锁(获得了访问权限),谁就可以执行。
    2.while轮询的方式
        a.这种方式比较浪费资源,是因为JVM將调度器交给轮询线程执行时,它只是在不断地测试某个条件是否成立。
        b.线程都是先把变量读取到本地线程栈空间,然后再去修改本地变量。另一线程每次都在取本地的条件变量,可能造成死循环。
    3.wait/notify机制
        a.调用wait()放弃CPU,并进入阻塞状态。调用notify(),唤醒其他线程。
        b.这种方式的好处是CPU的利用率提高了。
    4.管道通讯
        使用java.io.PipedInputStream 和 java.io.PipedOutputStream进行通信。

分布式系统中说的两种通信机制:共享内存机制和消息通信机制。前面的synchronized关键字和while轮询 “属于” 共享内存机制,
由于是轮询的条件使用了volatile关键字修饰时,这就表示它们通过判断这个“共享的条件变量“是否改变了,来实现进程间的交流。

而管道通信,更像消息传递机制,也就是说:通过管道,将一个线程中的消息发送给另一个。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 支持支持1 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|论坛规章制度|iKuai Inc. ( 京ICP备13042604号 )

GMT+8, 2024-10-2 10:35

Powered by Discuz! X3.3

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表