JDK线程的基本协作机制wait和notify怎么用

发布时间:2021-10-22 09:52:16 作者:柒染
来源:亿速云 阅读:320

这篇文章将为大家详细讲解有关 JDK线程的基本协作机制wait和notify怎么用,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

前言

线程间通信主要是通过wait、notify来实现的,使用这种机制实现线程通信是非常效率的,相比而言,不知道的同学针对线程通信可能只会想到轮询的方式,下次可别再去轮询共享变量了,把线程协作机制用起来。

一、线程协作的要素

首先,如果了解显式锁ReentrantLock或显式条件Condition,我们就会知道锁的队列不止有一个等待队列,还有一个等待条件队列,存放等待被唤醒的线程。 对于用声明式编程synchronized关键字来说,底层也是这种原理,对应的针对等待条件队列入队出队方法就是锁资源的wait/notify/notifyAll方法。但光有这种机制只能表示我们线程可以触发其他线程继续执行,前面说了叫等待条件队列,那条件到底是什么勒?一般来说条件就是线程间共享的一个变量,这个变量用于控制线程等待或继续执行。总结来说,notify一般伴随着一个条件共享变量的改变,wait一般伴随着一个条件共享变量的不满足。比如如下代码:

 synchronized (this) {
                while (!condition) {
                    wait();
                }
            }

最开始condition不满足,该线程放弃CPU执行权,进入等待条件队列,然后等到其他线程做了其他事后,条件共享变量被改变,然后该线程被唤醒,然后继续执行。

二、线程协作的场景

线程间的基本协作机制大致分为以下几种:

关于 JDK线程的基本协作机制wait和notify怎么用就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

推荐阅读:
  1. 浅谈java多线程wait,notify
  2. 怎么在Java多线程中使用wait、notify、notifyAll

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

jdk wait notify

上一篇:如何查看Linux上程序或进程用到的依赖库

下一篇:学SQL碰到问题有哪些

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》