java实现线程通信的几种方式[通俗易懂]

java实现线程通信的几种方式[通俗易懂]前言在多线程的世界里,线程与线程之间的交互无处不在,只不过在平时的开发过程中,大多数情况下,我们都在单线程的模式下进行编码,即使有,也直接借助框架自身的机制实现了,其实线程之间的通信在JDK中是一个比较深的问题,比如大家熟知的消息中间件的实现,从某种角度上讲,就借助了多线程通信的思想,下面总结了JDK中常用的几种实现线程通信的方式,提供参考1、synchronized实现方式可能很多小伙伴们会有疑问,synchronized是对共享资源加锁使用的,怎么和线程通信扯在一起呢?这里纠正一个小小的偏见,也是

大家好,又见面了,我是你们的朋友全栈君。

前言

在多线程的世界里,线程与线程之间的交互无处不在,只不过在平时的开发过程中,大多数情况下,我们都在单线程的模式下进行编码,即使有,也直接借助框架自身的机制实现了,其实线程之间的通信在JDK中是一个比较深的问题,比如大家熟知的消息中间件的实现,从某种角度上讲,就借助了多线程通信的思想,下面总结了JDK中常用的几种实现线程通信的方式,提供参考

1、synchronized实现方式

可能很多小伙伴们会有疑问,synchronized是对共享资源加锁使用的,怎么和线程通信扯在一起呢?这里纠正一个小小的偏见,也是我近期才矫正过来的

我们要弄明白的一点是,为什么会存在线程通讯这个问题呢?根据一些技术大牛们的说法就是,多个线程之间需要相互传递一些参数、变量或者是各个线程的执行需要互相依赖各自的结果,比如我们熟知的生产者消费者模式,只有生产者生产出来了东西,消费者才能进行消费啊

这里模拟假如有2个线程,需要操作一个共享资源,即修改共享资源的数据,使用synchronized的方式如下:

public class SycDemo1 {

    private static Object lock = new Object();

    private static String weather = "sunny";

    public static void main(String[] args) {

        new Thread(()->{
            synchronized (lock){
                System.out.println("
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/150725.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 一个对话让你明白架构师是做什么的?[通俗易懂]

    一个对话让你明白架构师是做什么的?[通俗易懂]阅读本文大概需要6分钟。很多人都想知道架构师是做什么?我们看看下面的一段对话。菜鸟——刚入门的程序员老鸟——资深架构师老鸟:菜鸟,你的目标是什么?菜鸟:我要成为一个软件架构师。老鸟:对一个年轻的工程师来说,这是一个很好的目标。那你为什么要成为架构师呢?菜鸟:我要领导一个团队,还要做所有关于数据库、框架和Web服务器的重要决定。老鸟…

    2022年10月27日
  • Java的Volatile关键字的作用

    Java的Volatile关键字的作用VolatileVolatile概念是Java特有的。如果你理解它解决的问题,会更容易理解它。如果一个变量,例如一个计数器正在被一个线程使用,有可能计数器的一个副本放在CPU高速缓存里,并且每次修改时,仅修改高速缓存的内容,而不是写到主存。JVM会决定什么时候更新主存。甚至当其他线程从主存里读取计数器的值时,有可能读到过期的值。如果一个变量用volatile修饰,不论一个线程读还是写此变量,总是从主存里读写。作为进一步的保证,当一个写线程写一个volatile修饰的变量时,写线程能看到的所有变

  • matlab安装包

    matlab安装包1.导入路径——保存2.compile——windows

  • 永远埋藏我的故事_把你藏进我的回忆

    永远埋藏我的故事_把你藏进我的回忆因为本身大家看来可能就很俗套吧!可是昨天他的一句话,我地动山摇,他还是牺牲了我来成全他的事业!在我没发生这件事情之前,我也很轻描淡写的劝我曾经遇见这样事情的大学同学,可是没想到一向心高气傲的我也会这样不理智,甚至可以说是堕落!      今年我大学毕业,说来很可笑,我现在还是初恋,没遇见他之前我的手都没让男生拉过,借别的系的师兄说的话,我是冷美人,可望不可急。是的,我一直都认为漂亮不是资本,而事业

  • Kafka集群配置[通俗易懂]

    Kafka集群配置[通俗易懂]之前一篇博文简单讲述了zookeeper和kafka的单机配置,详细可以参考《Linux(CentOS)中常用软件安装,使用及异常——Zookeeper,Kafka》。本文只要讲述Kafka集群的配置事项,包括zookeeper集群的配置。本文讲述的前提是kafka和zookeeper在单机情况下已正确安装和配置。如有疑问,可以参考《Linux(CentOS)中常用软件安装,使用及异常——Z…

  • Python基础教程Hello world

    Python基础教程Hello world

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号