
操作系统
灯初夜未央
。。。。。。。
展开
-
IO复用、多进程和多线程三种并发编程模型
I/O复用模型I/O复用原理:让应用程序可以同时对多个I/O端口进行监控以判断其上的操作是否可以进行,达到时间复用的目的。在书上看到一个例子来解释I/O的原理,我觉得很形象,如果用监控来自10根不同地方的水管(I/O端口)是否有水流到达(即是否可读),那么需要10个人(即10个线程或10处代码)来做这件事。如果利用某种技术(比如摄像头)把这10根水管的状态情况统一传达到某一点,那么就只需要1个人在...转载 2018-10-14 00:38:02 · 205 阅读 · 0 评论 -
java 中的锁 -- 偏向锁、轻量级锁、自旋锁、重量级锁
之前做过一个测试,详情见这篇文章《多线程 +1操作的几种实现方式,及效率对比》,当时对这个测试结果很疑惑,反复执行过多次,发现结果是一样的: 1. 单线程下synchronized效率最高(当时感觉它的效率应该是最差才对); 2. AtomicInteger效率最不稳定,不同并发情况下表现不一样:短时间低并发下,效率比synchronized高,有时甚至比LongAdder还高出一点,但是高并...转载 2018-10-15 19:21:08 · 148 阅读 · 0 评论 -
关于volatile,CAS,AQS,锁
关键字volatile 1.volatile保证可见性。 保证了不同线程对这个变量进行操作时的可见性,即一个线程修改了某个变量的值,这新值对其他线程来说是立即可见的。 2.volatile不能确保原子性。 以变量inc自增为例,初始化值为10: 线程1对变量进行自增操作,线程1先读取了变量inc的原始值,然后线程1被阻塞了; 然后线程2对变量进行自增操作,线程2也去读取变量inc的原始值,由...转载 2018-10-15 20:23:58 · 431 阅读 · 1 评论 -
轻松学习java可重入锁(ReentrantLock)的实现原理
前言 相信学过java的人都知道 synchronized 这个关键词,也知道它用于控制多线程对并发资源的安全访问,兴许,你还用过Lock相关的功能,但你可能从来没有想过java中的锁底层的机制是怎么实现的。如果真是这样,而且你有兴趣了解,今天我将带领你轻松的学习下java中非常重要,也非常基础的可重入锁-ReentrantLock的实现机制。 听故事把知识掌握了 在一个村子里面,有一口井水,水质...转载 2018-10-15 22:21:39 · 143 阅读 · 0 评论