上一页 1 2 3 4 5 6 7 ··· 9 下一页
摘要: 参考书:《Java并发编程艺术》 在学习这一块知识之前,可以先学习一下JMM相关的知识,回过来再看这个问题,就很好理解:https://www.cnblogs.com/perferect/p/13680158.html volatile 特性 可见性:对一个volatile变量的读,总能看到任意线程 阅读全文
posted @ 2020-09-21 00:21 PerfectLi 阅读(150) 评论(0) 推荐(0) 编辑
摘要: Executor框架 在实际开发工作中,或多或少我们都用到过多线程。一般很少使用 new Thread(){run()}.start()这种创建线程。一方面影响代码规范性,另外一方面,也是不方便多线程管理。当大量任务时,线程的创建销毁都会占用很多计算资源。这也是为什么使用线程池的原因。 在日常工作中 阅读全文
posted @ 2020-09-16 15:03 PerfectLi 阅读(235) 评论(0) 推荐(0) 编辑
摘要: FutureTask详解 作用:用于等待一个线程执行完毕后再执行另一个线程任务。一般用于Executors框架中,最常使用的是再ThreadPoolExecutor中,进行多线程任务; 注意: JDK1.8不在使用AQS进行线程管理; 取而代之的是通过CAS进行状态的切换,waiter线程节点由堆栈 阅读全文
posted @ 2020-09-14 18:19 PerfectLi 阅读(289) 评论(0) 推荐(0) 编辑
摘要: ThreadLocal在平时开发中是用的比较多的一个类,主要用于存储线程的数据。下面我对ThreadLocal进行一下总结; dreamcatcher-cx大佬对ThreadLocal的设计总结,写的比较深刻,很有帮助。 主要使用场景: 多数据源切换,记录当前线程访问的数据源 spring框架事务管 阅读全文
posted @ 2020-09-11 15:58 PerfectLi 阅读(262) 评论(7) 推荐(4) 编辑
摘要: LockSupport用来进行线程的阻塞和唤醒。在线程的一些操作中,经常能看到相关的使用。 park,unpark 和 wait,notify的区别 方法主体不同,wait和notify是Object的方法。 LockSupport 是针对线程进行阻塞和唤醒的操作 wait,notify和LockS 阅读全文
posted @ 2020-09-08 18:01 PerfectLi 阅读(173) 评论(0) 推荐(1) 编辑
摘要: 同一时刻允许多个读线程访问,但是在写线程访问时,所有的读线程和其他写线程均被阻塞。 所有晚于写操作的读操作都会进入等待状态。 数据结构 内部类提供了读写锁的子类 public class ReentrantReadWriteLock implements ReadWriteLock, java.io 阅读全文
posted @ 2020-09-08 16:40 PerfectLi 阅读(141) 评论(0) 推荐(0) 编辑
摘要: ReentrantLock也叫重入锁,可以对同一线程资源进行重复加锁。通过lock()方法可以显式的加锁,并且再次调用lock(),不会出现阻塞的情况 Sync子类提供锁的基本实现机制 非公平锁的获取 获取独占锁后,增加状态码 //加锁 final void lock() { if (compare 阅读全文
posted @ 2020-09-07 17:45 PerfectLi 阅读(179) 评论(0) 推荐(0) 编辑
摘要: 参考书:《java并发编程艺术》 参考博客:https://www.cnblogs.com/micrari/p/6937995.html 源码分析:活在夢裡 大佬写的很详细,也是我看过的AQS源码分析最好的博客了。 我就自己学习和理解的过程做一下记录。 1 数据存储结构 AQS的数据存储,是通过内部 阅读全文
posted @ 2020-09-07 14:27 PerfectLi 阅读(187) 评论(0) 推荐(0) 编辑
摘要: ConcurrentHashMap相较于HashMap最大的特点就是线程安全的。 这篇随笔主要了解以下ConcurrentHashMap的基本知识. 环境:JDK1.8 1.初始化 构造函数 1.可以看出默认的初始容量是16; 2.默认的平衡因子是0.75f //默认初始容量时16 private 阅读全文
posted @ 2020-09-03 17:29 PerfectLi 阅读(181) 评论(0) 推荐(0) 编辑
摘要: 红黑树 红黑树是一种自平衡的二叉树; 红黑树必须要遵循的规则: 1.节点是红色或黑色; 2.根节点为黑色; 3.每个叶子节点都是黑色的空节点; 4.红色节点不能有红色的父节点或子节点 5.从任一节点到叶子节点的黑色节点数必须一致; 红黑树的两大操作:变色和旋转 变色:将节点的颜色由黑变红,或者由红变 阅读全文
posted @ 2020-09-01 09:53 PerfectLi 阅读(216) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 ··· 9 下一页