简介 在之前已经有6篇关于AQS源码分析的文章了,关于源码分析的一些问题可以去看看我之前的文章,文章连接可以在文末查看。这一篇文章主要是对AQS的一些总结,或者说是面经。 AQS是什么 AQS 全称是AbstractQueuedSynchronizer,在java.util.concurrent.l ...
分类:
其他好文 时间:
2020-11-26 15:01:57
阅读次数:
5
#C++知识盲点梳理 语言基础 const使用 static变量用法 什么时候子类需要有析构函数/子类析构函数的作用 extern C作用 C++11有什么新特性 几种自动指针作用,有什么优缺点,如何实现 lambda表达式 泛型 多线程&多进程 C++锁机制有几种: 互斥锁\自旋锁\条件锁 多进程 ...
分类:
编程语言 时间:
2020-10-26 11:46:54
阅读次数:
32
序言上一节我们学习了异步查询转同步的7种实现方式,今天我们就来学习一下,如何对其进行封装,使其成为一个更加便于使用的工具。思维导图如下:拓展阅读java手写并发框架(1)异步查询转同步的7种实现方式异步转同步的便利性实现方式循环等待wait¬ify使用条件锁使用CountDownLatch使用CyclicBarrierFutureSpringEventListener上一节我们已经对
分类:
编程语言 时间:
2020-10-13 17:24:06
阅读次数:
101
序言上一节我们学习了异步查询转同步的7种实现方式,今天我们就来学习一下,如何对其进行封装,使其成为一个更加便于使用的工具。思维导图如下:拓展阅读java手写并发框架(1)异步查询转同步的7种实现方式异步转同步的便利性实现方式循环等待wait¬ify使用条件锁使用CountDownLatch使用CyclicBarrierFutureSpringEventListener上一节我们已经对
分类:
编程语言 时间:
2020-10-13 17:23:53
阅读次数:
32
package main import ( "fmt" "sync" "time" ) func main() { c := sync.NewCond(&sync.Mutex{}) queue := make([]interface{}, 0, 10) removeFromQueue := func ...
分类:
其他好文 时间:
2020-03-04 13:05:35
阅读次数:
193
在学习之前你应该先了解锁和队列基础 import queue import time import random import threading import asyncio import logging # from queue import Empty logging.basicConfig( ...
分类:
其他好文 时间:
2019-12-21 13:45:41
阅读次数:
67
wait()与notify() 首先考虑下面的情景,一个线程必须要等另外一个线程执行完才能继续执行,可以设置一个变量,第二个线程一直监控它,当第一个线程执行完后修改这个变量的值,第二个线程监控到值发生了改变然后继续执行,如下代码 上面的方式通过while循环去阻塞,会非常的耗费资源,那么有没有更简单 ...
分类:
编程语言 时间:
2019-12-15 21:43:49
阅读次数:
78
单线程模型 - 避免了不必要的上下文切换和竞争条件(锁) Redis客户端对服务端的每次调用都经历了发送命令,执行命令,返回结果三个过程。其中执行命令阶段,由于Redis是单线程来处理命令的,所有每一条到达服务端的每一条到达服务端的命令都不会立刻执行,所有的命令都会进入一个队列中,然后逐个执行。并且 ...
分类:
其他好文 时间:
2019-10-16 13:22:34
阅读次数:
95
并发与锁 a. 多个线程共享数据的时候,如果数据不进行保护,那么可能出现数据不一致现象,使用锁,信号量、条件锁 b. c.互斥锁1. 互斥锁,是使用一把锁把代码保护起来,以牺牲性能换取代码的安全性,那么Rlock后 必须要relase 解锁 不然将会失去多线程程序的优势2. 互斥锁的基本使用规则: ...
分类:
编程语言 时间:
2019-09-10 01:05:30
阅读次数:
125
原文:MySQL 加锁和死锁解析 目录 产生死锁的必要条件 锁是加在那里的? 操作与加锁的对照关系 Insert Delete Update GAP锁 什么时候加next-key lock? Insert Intenti... ...
分类:
数据库 时间:
2019-05-20 01:24:05
阅读次数:
189