概述
上一篇博客 《synchronized 的用法》中讲解了 synchronized 关键字的 所有具体用法, 以及它是如何解决多线程安全问题的。 借这篇文章回顾一下线程通信的基础知识,可能这些知识点大家都能略知一二,但实际项目开发中 几个月不用,可能又会忘记一半,对有些概念似是而非、模棱两可,导致业务项目用到时又需要重新学习,这里自己完整总结一次,方便下次使用时查阅。
一、什么是 “线程间通信”
如果仅仅是为了解决 多线程操作数据 的 安全问题(即多线程可见性),用 synchronized 关键字 完全能满足需求。 但如果 多个线程之间 针对数据的不同形态 有一些 要求, 这就是涉及到 线程间通信。
举个例子
比如 生产者和消费者问题, 生产者 和 消费者 分别位于各自的线程中, 生产者线程 不停的生产出 产品, 而消费者线程 不停的从 生产出的 产品中拿出来消费, 当生产的速度较慢,消费的速度较快时,消费者线程就必须进入阻塞等待状态, 这时一段生产者线程生产出一个新产品时,就必须立即唤醒 被阻塞的 消费者线程 进行消费。 这就是 线程间通信 的 具体实例。
“多线程安全” 和 “线程间通信”的关系
这里我的理解: “多线程安全” 和 “线程间通信” 存在一定的关系,但又不完全等价, “多线程安全”描述的是存在的问题这一事实, “线程间通信” 是解决多线程安全这个问题的手段, 但同时“线
最后
以上就是激昂饼干为你收集整理的synchronized 与wait、notify的关系,多线程安全 与 线程通信 的关系的全部内容,希望文章能够帮你解决synchronized 与wait、notify的关系,多线程安全 与 线程通信 的关系所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复