jucwait和notify原理

Posted 王佑辉

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jucwait和notify原理相关的知识,希望对你有一定的参考价值。

目录

一、monitor锁结构图

二、说明

  • 1.线程1一开始持有对象A的monitor锁,即monitor中的owner指向线程1
  • 2.线程1在执行的过程中发现条件a不满足执行不下去了,此时线程1可以调用wait方法,那么线程1就进入waitset进行等待,状态为waiting
  • 3.线程4准备给对象A加锁,发现当前对象A的monitor的owner是线程2,线程4则会进入entryList中准备竞争
  • 4.waitset和entrylist中的线程都处于阻塞状态,不会占用cpu的时间片
  • 5.waitset中的线程是获取到了锁,但又主动放弃了锁;entrylist中的线程是准备加锁时发现锁已经被其它线程占用,而获取不到锁
  • 6.waitset中的线程1和线程3会在owner指向的线程1调用notify或者notifyAll时唤醒,被唤醒后,不会立刻获得锁,还是要进入entrylist等待下一次竞争

微信小程序:观察者模式--notify广播通知

微信小程序和移动端不一样是没有观察者模式的,但可以按照观察者模式的原理做一个模拟类。

WxNotificationCenter.js


const wx_modifyCarInfo = \'wx_modifyCarInfo\'
const wx_modifyPeopleInfo = \'wx_modifyPeopleInfo\'


// 存放
var __notices = [];
var isDebug = true;
/**
 * addNotification
 * 注册通知对象方法
 *

以上是关于jucwait和notify原理的主要内容,如果未能解决你的问题,请参考以下文章

JUC共享模型下

JUC-三种等待唤醒方式

JUC-三种等待唤醒方式

JUC并发编程 --wait 和 sleep的区别 & 加锁对象的小建议 & wait notify 的正确姿势 & 虚假唤醒

JUC中的线程通信 Condition

JUC中的线程通信 Condition