![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
多线程
文章平均质量分 82
gaoshan12345678910
这个作者很懒,什么都没留下…
展开
-
隐式this引用在构造函数中逸出----《Java并发编程实战》3.2
隐式this引用在构造函数中逸出----《Java并发编程实战》3.2转载 2022-11-10 10:39:27 · 235 阅读 · 0 评论 -
线程池的三种队列区别:SynchronousQueue、LinkedBlockingQueue 和ArrayBlockingQueue
线程池的三种队列区别:SynchronousQueue、LinkedBlockingQueue 和ArrayBlockingQueue转载 2022-07-12 11:16:27 · 115 阅读 · 0 评论 -
CLH锁 简介
概述在学习Java AQS框架的时候发现加锁的逻辑非常奇怪,后来得知加锁逻辑是CLH锁的一个变种,于是了解一下,对于理解AQS框架有好处。简介CLH锁是有由Craig, Landin, and Hagersten这三个人发明的锁,取了三个人名字的首字母,所以叫 CLH Lock。CLH锁主要有一个QNode类,QNode类内部维护了一个boolean类型的变量,每个线程拥有一个前驱节点(myPred)和当前自己的节点(myNode),还有一个tail节点用于存储最后一个获取锁的线程的状态转载 2022-04-14 15:30:48 · 1131 阅读 · 0 评论 -
Java进阶(七)正确理解Thread Local的原理与适用场景
本文转发自技术世界,原文链接 http://www.jasongj.com/java/threadlocal/ThreadLocal解决什么问题由于 ThreadLocal 支持范型,如 ThreadLocal< StringBuilder >,为表述方便,后文用变量代表 ThreadLocal 本身,而用实例代表具体类型(如 StringBuidler )的实例。...转载 2019-10-10 11:03:08 · 101 阅读 · 0 评论 -
ThreadLocal的简单总结
ThreadLocal 并不解决线程间共享数据的问题 ThreadLocal 通过隐式的在不同线程内创建独立实例副本避免了实例线程安全的问题 每个线程持有一个 Map 并维护了 ThreadLocal 对象与具体实例的映射,该 Map 由于只被持有它的线程访问,故不存在线程安全以及锁的问题 ThreadLocalMap 的 Entry 对 ThreadLocal 的引用为弱引用,避免了 Th...原创 2019-10-25 15:30:47 · 134 阅读 · 0 评论 -
ThreadLocal源码解读
转自https://www.cnblogs.com/micrari/p/6790229.html1. 背景ThreadLocal源码解读,网上面早已经泛滥了,大多比较浅,甚至有的连基本原理都说的很有问题,包括百度搜索出来的第一篇高访问量博文,说ThreadLocal内部有个map,键为线程对象,太误导人了。ThreadLocal非常适合对Java多线程编程感兴趣的程序员作为入门类阅读,原因两方面:加上注释源码也不过七八百行。 结构清晰,代码简洁。本文重点导读ThreadLocal中.转载 2021-03-15 20:40:40 · 98 阅读 · 0 评论 -
Java死锁的原因例子及解决方法
Java发生死锁的根本原因是:在申请锁时发生了交叉闭环申请。即线程在获得了锁A并且没有释放的情况下去申请锁B,这时,另一个线程已经获得了锁B,在释放锁B之前又要先获得锁A,因此闭环发生,陷入死锁循环。死锁发生的例子1:public class DeadLockA extends Thread { @Override public void run() { try{ System.out.println("LockA running");转载 2021-03-07 19:52:25 · 241 阅读 · 0 评论 -
尽量把CyclicBarrier和CountDownLatch的区别说通俗点
转自https://www.iteye.com/blog/aaron-han-1591755先说两点都知道的:1.CountDownLatch减计数,CyclicBarrier加计数。2.CountDownLatch是一次性的,CyclicBarrier可以重用。然后我们用被大家说烂了的跑步的例子继续说事儿:1. 有五个人,一个裁判。这五个人同时跑,裁判开始计时,五个人都到终点了,裁判喊停,然后统计这五个人从开始跑到最后一个撞线用了多长时间。import java.util.concur原创 2021-03-05 16:25:52 · 150 阅读 · 0 评论 -
Java中CountDownLatch介绍与应用
正如每个Java文档所描述的那样,CountDownLatch是一个同步工具类,它允许一个或多个线程一直等待,直到其他线程的操作执行完后再执行。在Java并发中,countdownlatch的概念是一个常见的面试题,所以一定要确保你很好的理解了它。CountDownLatch是什么CountDownLatch是在java1.5被引入的,跟它一起被引入的并发工具类还有CyclicBarrier、Semaphore、ConcurrentHashMap和BlockingQueue,它们都存在于java.u转载 2021-03-05 15:38:40 · 95 阅读 · 0 评论 -
java中的sleep()和wait()的区别
对于sleep()方法,我们首先要知道该方法是属于Thread类中的。而wait()方法,则是属于Object类中的。sleep()方法导致了程序暂停执行指定的时间,让出cpu该其他线程,但是他的监控状态依然保持者,当指定的时间到了又会自动恢复运行状态。在调用sleep()方法的过程中,线程不会释放对象锁。而当调用wait()方法的时候,线程会放弃对象锁,进入等待此对象的等待锁定池,只转载 2017-03-23 13:41:11 · 203 阅读 · 0 评论 -
Semaphore
一个计数信号量。从概念上讲,信号量维护了一个许可集合。如有必要,在许可可用前会阻塞每一个 acquire(),然后再获取该许可。每个 release() 添加一个许可,从而可能释放一个正在阻塞的获取者。但是,不使用实际的许可对象,Semaphore 只对可用许可的号码进行计数,并采取相应的行动。Semaphore 通常用于限制可以访问某些资源(物理或逻辑的)的线程数目。例如,下面的翻译 2017-03-24 11:13:02 · 205 阅读 · 0 评论 -
Java多线程(九)之ReentrantLock与Condition
一、ReentrantLock 类1.1 什么是reentrantlockjava.util.concurrent.lock 中的 Lock 框架是锁定的一个抽象,它允许把锁定的实现作为 Java 类,而不是作为语言的特性来实现。这就为 Lock 的多种实现留下了空间,各种实现可能有不同的调度算法、性能特性或者锁定语义。 ReentrantLock 类实现了 Lock ,它转载 2017-03-22 17:49:09 · 230 阅读 · 0 评论