随笔分类 - 线程
摘要:紧接上篇~ addWorkerFailed addWorker 方法中,如果添加 Worker 并且启动线程失败,则会做失败后的处理。 这个方法主要做三件事: 1. 如果 worker 已经构造好了,则从 workers 集合中移除这个 worker。 2. 原子递减核心线程数(因为在 addWor
阅读全文
摘要:线程池原理篇幅太长,所以博主分为上、下两章节讲解,望有兴趣的朋友慢慢阅读~ 什么是线程池 在 Java 中,如果每个请求到达就创建一个新线程,创建和销毁线程花费的时间和消耗的系统资源都相当大,甚至可能要比在处理实际的用户请求的时间和资源要多的多。如果在一个 Jvm 里创建太多的线程,可能会使系统由于
阅读全文
摘要:CyclicBarrier 的字面意思是可循环使用(Cyclic)的屏障(Barrier)。它要做的事情是,让一组线程到达一个屏障(也可以叫同步点)时被阻塞,直到最后一个线程到达屏障时,屏障才会开门,所有被屏障拦截的线程才会继续工作。 CyclicBarrier 默认的构造方法是 CyclicBar
阅读全文
摘要:semaphore 也就是我们常说的信号灯,semaphore 可以控制同时访问的线程个数,通过 acquire 获取一个许可,如果没有就等待,通过 release 释放一个许可。有点类似限流的作用。叫信号灯的原因也和他的用处有关,比如某商场就 5 个停车位,每个停车位只能停一辆车,如果这个时候来了
阅读全文
摘要:今天博主来讲解下J.U.C下的countdownlatch,它 是一个同步工具类,它允许一个或多个线程一直等待,直到其他线程的操作执行完毕再执行。从命名可以解读到 countdown 是倒数的意思,类似于我们倒计时的概念。countdownlatch 提供了两个方法,一个是 countDown,一个
阅读全文
摘要:问题 (1)volatile是如何保证可见性的? (2)volatile是如何禁止重排序的? (3)volatile的实现原理? (4)volatile的缺陷? 简介 volatile可以说是Java虚拟机提供的最轻量级的同步机制了,但是它并不容易被正确地理解,以至于很多人不习惯使用它,遇到多线程问
阅读全文
摘要:本文导航: 获取锁 释放锁 公平锁与非公平锁 ReentrantLock 与 synchronized 的区别 参考资料 ReentrantLock,JUC提供的可重入锁,是一种递归无阻塞的同步机制。 它可以等同于 synchronized 的使用,但是提供了比 synchronized 更强大、更
阅读全文
摘要:本篇主要是对Java并发中synchronized关键字进行较为深入的探索,这些知识点结合博主对synchronized的个人理解以及相关的书籍的讲解(在结尾参考资料),如有误处,欢迎留言。 本文导航: synchronized的三种应用方式 synchronized作用于实例方法 synchron
阅读全文