美文网首页
java18(多线程--04 线程间通信)

java18(多线程--04 线程间通信)

作者: 机智的老刘明同志 | 来源:发表于2019-01-15 15:05 被阅读88次

线程间通信:

        其实就是多个线程操作同一个资源,但是操作的动作不同


        如下图代码所示,input类正在不停地输入Res类中的name值和sex值,output类正在不停地打野Res类中的name和sex。结果却产生了安全问题(性别颠倒)

        针对上图这种情况,我们给input类和output类加上了共同的锁 (r对象),问题得到了暂时的解决。

        但是结果却并不是太理想(理想中的结果是 莉莉---女和明哥---男交替出现,而不是成块出现),这是因为input线程和output线程争夺执行权,一旦某一个线程夺得了执行权之后,不会仅仅操作一次就退出。

等待唤醒机制:

        wait():等待(线程就进入到了线程池中)

        notify():唤醒(唤醒线程池中的一个线程,通常是第一个)

        notifyAll():唤醒线程池中的全部线程   

        jdk手册对wait方法的注释:

        因为要对持有监视器(锁)的线程操作,所以要使用在同步中(只有同步才具备锁)

        顺便一提,这些方法定义在java的上帝类(object类中),这是因为这些方法操作同步中的线程时,都必须要标识它们所操作的线程具有的锁(只有在同一个锁上的被等待线程,才能被同一个锁上的notify()唤醒,不同锁的中的线程不会被唤醒)也就是说,等待和唤醒必须是同一个锁,而锁可以是任意对象,所以可以被任意对象调用的方法定义Object类中。

            

        

    

相关文章

  • java18(多线程--04 线程间通信)

    线程间通信: 其实就是多个线程操作同一个资源,但是操作的动作不同 如下图代码所示,input类正在不停地输...

  • Java多线程(2)

    Java多线程(2) 线程间的通信 线程间的通信又称为进程内通信,多个线程实现互斥访问共享资源时会互相发送信号或等...

  • GCD练习

    GCD练习 ios 多线程 GCD : ios 多线程 全剧队列,异步执行 线程间通信 信号量 文件锁 单利模式 ...

  • JUC中线程之间得通信

    使用synchronized实现线程间通信,线程间通信:1、生产者+消费者2、通知等待唤醒机制.多线程编程模板:1...

  • Java基础知识02- 线程

    多线程通信 :什么是多线程通信 ?怎么进行通信 ? 多线程通信就是多个线程同时操作同一个全局变量,但是操作的动作不...

  • Python多线程

    目录:一、线程的创建二、多线程互斥锁三、线程间通信四、线程池 Python并发之多线程 一、线程的创建 单线程示例...

  • 8.进程间通信与进程池

    进程间通信与进程池 进程间通信-Queue 通常利用multiprocessing模块的Queue实现多线程之间的...

  • 多线程:3线程间通信

    线程间通信:《多线程编程核心技术》笔记 1.等待/通知机制 1.1什么是等待通知机制 1.厨师做完一道菜的时间不确...

  • iOS多线程-线程间通信

    复习下线程的基础知识, 这里主要是参考文顶顶多线程篇复习写的。 一、简单说明 线程间通信:在1个进程中,线程往往不...

  • java基础-day22-多线程、线程通信和线程池

    多线程,线程通信和线程池 1. 多线程 1.1 线程状态 1.2 Object类中的方法 2. 线程通信 生产者消...

网友评论

      本文标题:java18(多线程--04 线程间通信)

      本文链接:https://www.haomeiwen.com/subject/qngjdqtx.html