大学有一门课程叫操作系统,学习过的同学应该都记得,监视器是操作系统实现同步的重要基础概念,同样它也用在JAVA的线程同步中,这篇文章用一种类推的思想解释监视器”monitor”。 1.什么是监视器 监视器可以看做是经过特殊布置的建筑,这个建筑有一个特殊的房间,该房间通常包含一些数据和代码,但是一次只 ...
分类:
编程语言 时间:
2020-08-19 19:10:52
阅读次数:
66
微信支付的申请退款接口,可以设置notify_url参数,这个参数代表微信退款成功后调用商户自己的接口,当微信调用这个接口时,代表款项正式退给了付款方。根据观察,如果是微信零钱支付,调用申请退款接口后是秒退,如果是微信绑定的银行卡或信用卡支付,大概几分钟后到账。微信退款申请接口文档:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9
分类:
微信 时间:
2020-08-17 16:49:19
阅读次数:
101
sync.Cond 是一个事件通知,类似于java中的conditional 或者 wait/notify 机制。 它有一个重要的作用是,协程之间通过锁进行协调的时候,其中一个协程等待的时候,可以释放锁和资源,并且能够及时完成准备工作。 比如经典的生产者消费,例如有一个队列,只有大小为1,生产者需要 ...
分类:
编程语言 时间:
2020-07-30 01:33:46
阅读次数:
89
状态1:新建一个线程并且开启start()方法,使Java线程和操作系统线程联系起来; 状态2:Running——Waiting :调用wait方法 synchronized(lock){ lock.wait(); //进入waiting状态,释放锁 } synchronized(lock){ lo ...
分类:
编程语言 时间:
2020-07-28 22:50:50
阅读次数:
107
3.1、Notify Notify是淘宝自主研发的一套消息服务引擎,是支撑双11最为核心的系统之一,在淘宝和支付宝的核心交易场景中都有大量使用。消息系统的核心作用就是三点:解耦,异步和并行。下面让我以一个实际的例子来说明一下解耦异步和并行分别所代表的具体意义吧: 假设我们有这么一个应用场景,为了完成 ...
分类:
Web程序 时间:
2020-07-24 16:47:45
阅读次数:
153
一、什么时候使用synchronized关键字 在多线程编程永远都逃不开线程安全的问题,影响线程安全的因素主要有两:1、存在共享数据;2、多线程共同操作共享数据。关键字synchronized可以保证在同一时刻,只有一个线程可以执行某个方法或某个代码块,同时synchronized可以保证一个线程的 ...
分类:
编程语言 时间:
2020-07-24 10:02:21
阅读次数:
65
线程的通信 线程的状态 新建 就绪 运行 阻塞 死亡 通信涉及到三个方法 wait() 一旦执行此方法,当前线程就进入阻塞状态,并释放同步监视器 notify() 一旦执行此方法,就会唤醒被wait()的一个线程 如果有多个线程被wait,就唤醒优先级高的那个线程 线程之间没有优先级就随机唤醒 no ...
分类:
编程语言 时间:
2020-07-22 01:57:15
阅读次数:
72
预备知识 Java线程的生命周期 概览 本文探究一下Java最基础的机制之一:线程同步 我们先讨论一些并发相关的术语和方法论,接着会提供一个简单例子来处理并发问题,可以帮助我们更好的理解wait()和notify()方法。 线程同步 多线程环境下,每个线程都可能去修改相同资源,如果线程没有被较好的管 ...
分类:
编程语言 时间:
2020-07-18 15:48:03
阅读次数:
66
常用类 他们都在java.lang包中 Object类 Object类是类层次结构的根。每个类都有 Object作为超类。所有对象,包括数组,实现这个类的方法。 hashCode() toString() clone() getClass() notify() wait() equals() ... ...
分类:
编程语言 时间:
2020-07-13 21:33:10
阅读次数:
79
wait & notify/notifyAll 通过之前的文章,https://www.cnblogs.com/fcb-it/p/13282740.html 我们已经知道了重量级锁会存在等待队列和阻塞队列,这两个队列是做什么用的呢? 阻塞队列:BLOCKED状态的线程会在该队列,当发现锁可用时,线程 ...
分类:
其他好文 时间:
2020-07-11 12:45:49
阅读次数:
66