queue模块实现了多生产者,多消费者队列 queue模块的常用类和异常 queue.Queue(maxsize=0) 先进先出(FIFO)的队列, maxsize: 队列的大小(即队列的元素个数),默认0,队列大小无限;如果超过maxsize,队列会加锁,添加新元素是被堵塞,直到队列中的元素小于m ...
分类:
编程语言 时间:
2021-02-19 13:10:44
阅读次数:
0
代码位置 nextTick的实现在src/core/util/next-tick.js中。 主要代码块 根据当前环境,选择实现nextTick异步回调的途径。 // 首先是看当前环境支不支持Promise,如果支持Promise就使用Promise,添加了一个微任务 if (typeof Promi ...
分类:
Web程序 时间:
2020-12-28 10:56:57
阅读次数:
0
1 AQS state AQS 的关键 CAS Compare And Swap 修改 state Unsafe 使用 LockSupport 的 park()、unpark() 挂起和唤醒线程 同步队列 sync queue 条件队列 condition queue 等待队列 还有什么阻塞队列,看 ...
分类:
其他好文 时间:
2020-11-04 17:34:20
阅读次数:
14
视频选集 1/39 P11、JUC课程介绍 P22、唠嗑:线程和进程 P33、唠嗑:回顾多线程 P44、传统的Synchronized锁 P55、Lock锁 P66、Synchronized和Lock区别 P77、传统的生产者消费者问题、防止虚假唤醒 P88、Lock版的生产者消费者问题 P99、C ...
分类:
其他好文 时间:
2020-06-21 11:34:33
阅读次数:
194
1.在事件处理函数中(队列),js的执行顺序是从上往下执行,也就是所说的同步执行 在事件处理函数中有异步请求时,异步的请求会脱离同步队列执行,单独去执行, 下面的例子就是一个异步的例子,下面的数据不会等到上面的异步请求执行完毕后打印,这就是所说的异步 2.使用async 和 await 来修饰异步请 ...
分类:
其他好文 时间:
2020-06-05 12:51:54
阅读次数:
69
BIO(Blocking I/O) 同步阻塞模式,数据的读写必须阻塞在一个线程中。为了让BIO通信模型能够同时处理多个客户端,每个客户端分配一个线程(在接到客户端的连接请求后accept()),处理完成后,返回一个输出流给客户端。 弊端:客户端多的话,线程跟着增加,内存跟不上。 伪异步BIO 为了改 ...
分类:
编程语言 时间:
2020-05-09 20:48:47
阅读次数:
64
1.wait()方法和sleep()方法: wait()方法在等待中释放锁;sleep()在等待的时候不会释放锁,抱着锁睡眠。 2.notify(): 随机唤醒一个线程,将等待队列中的一个等待线程从等待队列中移到同步队列中。 public class Demo_Print { public stat ...
分类:
编程语言 时间:
2020-04-04 14:27:06
阅读次数:
73
一、全称 AbstractQueueSynchronier 二、并发包的使用 ReentrantLock:new ReentrantLock()/lock()/unlock() ReentranReadWriteLock 可重入锁:对同一个对象可以多次加锁 三、底层 1.抽象同步队列三个核心组件:加 ...
分类:
其他好文 时间:
2020-04-02 12:02:12
阅读次数:
78
AQS是什么 AbstractQueuedSynchronizer抽象同步队列简称AQS,它是实现同步器的基础组件,并发包中锁的底层就是使用AQS实现的。 先看下一下AbstractQueuedSynchronizer的说明文档 通过官方文档可以知道它是用来构建锁或者其他同步组件的基础框架,它使用了 ...
分类:
其他好文 时间:
2020-02-13 22:52:57
阅读次数:
63
1. 队列和栈 队列:就像管道,排队在,先进先出(FIFO); 栈:就像桶,先进后出。 2. 阻塞队列(BlockingQueue) A. 阻塞队列:由于队列有容量限制,故当队列元素已满时,新增加的元素必须等待,或当队列元素取出已空时,也会阻塞等待新的元素; B. ArrayBlockingQueu ...
分类:
编程语言 时间:
2020-02-11 18:54:16
阅读次数:
72