
多线程
文章平均质量分 78
zcswl7961
Ezui
展开
-
wait和notify的虚假唤醒(spurious wakeups)
文章目录1 现象2 虚假唤醒 1 现象 这个词的定义来源于JDK的Object#wait()方法的注解 官方API明确的告诉我们,为了防止发生中断错误以及虚假唤醒的问题,我们需要将wait()方法放在while() 循环中使用 synchronized (obj) { while (<condition does not hold>) { obj.wait(); } ... // Perform action appropriate to原创 2021-01-18 18:19:18 · 1358 阅读 · 0 评论 -
逐行源码分析AbstractQueuedSynchronizer(AQS)中CountDownLatch的源码实现
文章目录1 介绍2 场景3 使用4 共享锁和独占锁 1 介绍 在上篇文章 逐行源码分析AbstractQueuedSynchronizer(AQS)中Semaphore的源码实现 中,我们分析了高性能源码包java.util.concurrent 中的信号量Semaphore类的使用场景和源码。 这篇文章我们介绍 java.util.concurrent 包中的另一个重要的工具类:CountDownLatch ,这个高性能工具类的使用场景应该是比Semaphore 较于普遍性 2 场景 官方文档中的解释是原创 2020-12-09 17:04:39 · 1712 阅读 · 0 评论 -
逐行源码分析AbstractQueuedSynchronizer(AQS)中Semaphore的源码实现
文章目录1 介绍2 场景3 使用4 分析 1 介绍 在上一篇博客:逐行源码分析AbstractQueuedSynchronizer(AQS)中ReentrantLock的源码实现 中是分析了关于高性能包java.util.concurrent 中的AQS得底层设计,以及ReentrantLock 的源码实现。 这篇博客,我们会分析AQS的另一个实现:信号量:Semaphore 2 场景 实际上对于Semaphore 这个类的使用,毫无客气的说,在平时的业务逻辑代码使用的很少(或许有些不知道咋使用的吧)。原创 2020-12-04 23:04:57 · 2230 阅读 · 0 评论 -
逐行源码分析AbstractQueuedSynchronizer(AQS)中ReentrantLock的源码实现
文章目录1 介绍1 开头 1 介绍 java中,锁经常是我们去使用的一个技术,无论是使用jdk原生的synchronized,或者是使用jdk提供的无锁机制,对于java.util.concurrent 的认识,都会有或多或少的理解。 一提到高性能的jdk包,就不得不提Doug Lea 这位超级大佬。 如果IT的历史,是以人为主体串接起来的话,那么肯定少不了Doug Lea。这个鼻梁挂着眼镜,留着德王威廉二世的胡子,脸上永远挂着谦逊腼腆笑容,服务于纽约州立大学Oswego分校计算机科学系的老大爷。 上面的原创 2020-12-02 23:19:26 · 2766 阅读 · 0 评论 -
Linux系统中IO多路复用
1 什么是IO多路复用 常见的IO模型中,一般有四种,阻塞IO模型,非阻塞IO模型,IO复用模型,信号驱动IO模型,异步IO模型, 我们在去理解IO复用模型之前,首先去理解一下其他的四种IO模型 1.1 阻塞IO模型 阻塞IO模型就是我们在使用BIO去开源socket的时候,通过socket进行accpet,read的时候,都属于阻塞IO模型,他们会直到数据连接到达,以及数据就绪或者发生错误的时候...原创 2020-04-09 16:12:39 · 818 阅读 · 2 评论 -
linux脚本
文章目录1 理论2 语法2.1 & 和 && ,| 和 || ,&> 和 > 的区别2.2 /dev/null2.3 2>/dev/null 和 >/dev/null 2>&1 和 2>&1>/dev/null 的区别2.4 $ (()), \$() ,\` \`反引号,${}的区别 1 理论 2 语法 2...原创 2019-12-11 16:56:20 · 353 阅读 · 0 评论 -
创建线程池需要注意的事情
1 介绍 阿里的java代码规范有一条是强制建议开发者不要使用Executors创建线程池。 而是建议我们使用原生的ThreadPoolExecutor进行创建,既然这么建议了,自然是有它建议的道理,下面我们就来简单的分析一下为什么不推荐我们使用Executors进行创建。 2 分析 作为一个java开发,线程池是我们工作当中,必不会不去使用的一个工具,关于线程池的好处,自然是不用多说,反正就...原创 2019-12-20 17:32:44 · 1055 阅读 · 0 评论 -
读写锁的判定和可重入性
看了一个很好的关于读写线程的设计,支持可重入,代码写的很好,优秀的代码总是需要慢慢的思考的学习的,嘿嘿package com.zcswl.syn;import java.util.HashMap; import java.util.Map; /** * 读线程不能够阻塞读线程, * 当前的读线程能够阻塞其他线程的写线程,自身拥有写线程 * 当前的写线程能够阻塞其他线程的读线程,自身拥有读线程,原创 2017-03-30 14:59:12 · 334 阅读 · 0 评论