
多线程
文章平均质量分 81
我是小胡鸭
这个作者很懒,什么都没留下…
展开
-
JUC并发工具的使用和原理
ConditionCondition原理Condition 是一个多线程协调通信的工具类,可以让某些线程一起等待某个条件(condition),只有满足条件时,线程才会被唤醒。在AQS中存在两个FIFO队列:同步队列 和 等待队列。本篇文章主要是讲condition实现原理(即等待队里),同步队列实现原理看这篇文章:深入剖析AQS。等待队列是由Condition内部实现的,是一个虚拟的FI...原创 2020-11-24 13:56:00 · 416 阅读 · 0 评论 -
线程启动与终止原理
线程启动原理 当用start()开始一个线程后,线程就进入就绪状态,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行;但是这并不意味着线程就会立即运行,只有当cpu分配时间片时,这个线程获得时间片时,才开始执行run()方法;start()方法去调用run(),而run()方法则是需要去重写的,其包含的是线程的主体(真正的逻辑)。在我最早学习线程的时候会比较疑惑,启动一...原创 2020-11-19 17:03:00 · 381 阅读 · 0 评论 -
深入剖析AQS
1. 锁原理 - 信号量 vs 管程在并发编程领域,有两大核心问题:互斥与同步,互斥即同一时刻只允许一个线程访问共享资源,同步,即线程之间如何通信、协作,一般这两大问题可以通过信号量和管程来解决。信号量信号量(Semaphore)是操作系统提供的一种进程间常见的通信方式,主要用来协调并发程序对共享资源的访问,操作系统可以保证对信号量操作的原子性。它是怎么实现的呢。信号量由一个共享整型...原创 2020-11-03 13:35:00 · 262 阅读 · 0 评论 -
手写简易线程池
/**手写简易的线程池 * @author 胡庆安 * @version V1.0 * @Package Thread.pool * @date 2020/10/23 10:57 * @Copyright © 2010-2020 爬山虎科技(扬州)股份有限公司 */public class HqaPool { /** * 核心线程数 */ i...原创 2020-10-28 15:02:00 · 107 阅读 · 0 评论 -
线程池详解
一 、使用线程池的好处池化技术相比大家已经屡见不鲜了,线程池、数据库连接池、Http 连接池等等都是对这个思想的应用。池化技术的思想主要是为了减少每次获取资源的消耗,提高对资源的利用率。线程池提供了一种限制和管理资源(包括执行一个任务)。 每个线程池还维护一些基本统计信息,例如已完成任务的数量。这里借用《Java 并发编程的艺术》提到的来说一下使用线程池的好处:降低资源消耗。通过重复...原创 2020-08-20 14:50:00 · 90 阅读 · 0 评论 -
公平锁与非公平锁
公平锁:多个线程按照申请锁的顺序去获得锁,线程会直接进入队列去排队,永远都是队列的第一位才能得到锁。优点:所有的线程都能得到资源,不会饿死在队列中。 缺点:吞吐量会下降很多,队列里面除了第一个线程,其他的线程都会阻塞,cpu唤醒阻塞线程的开销会很大。 非公平锁:多个线程去获取锁的时候,会直接去尝试获取,获取不到,再去进入等待队列,如果能获取到,就直接获取到锁。优点:可以减少CPU唤醒线程的开...原创 2020-05-20 21:44:00 · 102 阅读 · 0 评论