StampedLock 是从 JDK1.8 开始提供,它的性能比 ReadWriteLock 好 StampedLock 支持:乐观读锁、悲观读锁、写锁 StampedLock 的悲观读锁、写锁,与 ReadWriteLock 的读锁、写锁用法相似:读读可并行、读写互斥、写写互斥。 StampedL ...
分类:
其他好文 时间:
2019-12-24 09:58:10
阅读次数:
65
静态链接库和动态链接库的区别 一个进程可以通过调用waitpid函数来等待它的子进程终止或者停止 Debug和Release的区别 临界区互斥量信号量事件进程互斥与同步 进程有哪几种状态,状态转换图,及导致转换的事件 进程由运行态进入就绪态和阻塞态的原因 进程切换 进程调度算法 死锁 哲学家就餐问题 ...
分类:
编程语言 时间:
2019-12-24 09:46:17
阅读次数:
111
1.什么是会话session : 用户和程序直接的链接,程序可以根据session识别到哪个用户,和javaweb中的session类似 2. 什么是会话管理器SessionManager : 会话管理器管理所有subject的所有操作,是shiro的核心组件,它是一个接口,定义如下: shiro中 ...
分类:
其他好文 时间:
2019-12-24 09:40:08
阅读次数:
96
如上图,有五位哲学家,盘中的食物只有左右两个叉子都拿起才能吃。哲学家在桌上只有思考(等待)和吃面(执行)。看起来最多是只有2个人能同时吃。 版本一:这个思路的最糟糕的就是都拿起左边叉子,那样都没法吃了,直接死锁。 版本二:改进版本一,如果拿起左边叉子,先看右边是否能用,不可用的话放下左边叉子等待一段 ...
分类:
其他好文 时间:
2019-12-23 22:47:03
阅读次数:
142
Redis分布式锁 在许多环境中,分布式锁是一种非常有用的原语,其中不同的进程必须以互斥的方式与共享资源一起运行。 有许多库和博客文章描述了如何使用Redis实现DLM(分布式锁管理器),但是每个库都使用不同的方法,而且许多库使用的是一种简单的方法,与稍微复杂的设计相比,可以获得较低的保障。 此页面 ...
分类:
其他好文 时间:
2019-12-23 22:36:30
阅读次数:
114
本章内容: 1.并发与高并发理解 2.缓存一致性 3.乱序执行优化 4.Java内存模型(JMM) 5. 并发的优势、风险 一、并发与高并发理解 并发:同时拥有两个或者多个线程,如果程序在单核处理器上运行,多个线程将交替地换入换出内存,这些线程时同时存在的,只不过处于执行过程中的不同状态。如果运行在 ...
分类:
其他好文 时间:
2019-12-22 18:21:38
阅读次数:
104
临界区是指一个小代码段,在代码能够执行前,它必须独占对某些共享资源的访问权。和使用mutex一样,它们都是以原子操作方式来对共享资源进行访问。 临界区又叫关键代码段,与上一篇的mutex互斥体实现的功能一样,都是为了让多线程同步 从上面图片可以看到二者的区别,如果是在当前进程进行线程同步,只需要采用 ...
分类:
编程语言 时间:
2019-12-20 15:29:54
阅读次数:
108
前言 前两篇我们讲述了ReentrantLock的加锁释放锁过程,相对而言比较简单,本篇进入深水区,看看ReentrantReadWriteLock-读写锁的加锁过程是如何实现的,继续拜读老Lea凌厉的代码风。 一、读写锁的类图 读锁就是共享锁,而写锁是独占锁。读锁与写锁之间的互斥关系为:读读可同时 ...
分类:
其他好文 时间:
2019-12-19 23:12:58
阅读次数:
70
概念 synchronized 是 Java 中的关键字,是利用锁的机制来实现同步的。 锁机制有如下两种特性: 互斥性:即在同一时间只允许一个线程持有某个对象锁,通过这种特性来实现多线程中的协调机制,这样在同一时间只有一个线程对需同步的代码块(复合操作)进行访问。互斥性我们也往往称为操作的原子性。 ...
分类:
其他好文 时间:
2019-12-18 11:16:10
阅读次数:
92
对象共享 synchronized 设定原子性确定临界区 + 内存可见性 要解决如下问题 防止一个线程在使用对象状态而另一个线程在修改对象状态;且当一个线程修改了对象状态后,对其他线程可见。 可见性 多线程情况下的读写,无法保证在执行读操作时能够看到其他线程写入的值 同步机制解决 造成可见性的原因之 ...
分类:
编程语言 时间:
2019-12-17 14:50:06
阅读次数:
85