摘要:1.线程池简介 使用线程池,一般会使用JDK提供的几种封装类型,即: 、`newSingleThreadExecutor newCachedThreadPool Executors`类中,来看看相关的源码: 这些方法内部都使用了 的构造方法,区别只是传入的参数不同。 有四个重载的构造方法,最终调用的 阅读全文
posted @ 2020-04-16 17:58 纳兰小依 阅读(279) 评论(0) 推荐(1) 编辑
摘要:`ReentrantReadWriteLock ReentrantLock ReentrantReadWriteLock ReentrantReadWriteLock`更加复杂一些。 1.核心字段与构造器 通过 和`WriteLock Sync AbstractQueuedSynchronizer( 阅读全文
posted @ 2020-03-22 16:29 纳兰小依 阅读(51) 评论(0) 推荐(0) 编辑
摘要:`ReentrantLock`是一种可重入锁,可重入是说同一个线程可以多次获取同一个锁,内部会有相应的字段记录重入次数,它同时也是一把互斥锁,意味着同时只有一个线程能获取到可重入锁。 1.构造函数 提供了两个构造函数,构造函数只是用来初始化 字段,可以看到,默认情况下 使用的是非公平锁,当然,也可以 阅读全文
posted @ 2020-03-17 00:37 纳兰小依 阅读(251) 评论(1) 推荐(0) 编辑
摘要:`CyclicBarrier CyclicBarrier CountDownLatch CyclicBarrier CyclicBarrier ReentrantLock`,主要方法在执行时都会加锁,因此并发性能不是很高。 1.相关字段 需要注意的是 字段,用于标记栅栏当前处在哪一代。当满足一定的条 阅读全文
posted @ 2020-03-13 00:58 纳兰小依 阅读(130) 评论(0) 推荐(0) 编辑
摘要:`ThreadLocal ThreadLocal`内存泄漏的面试题,居然完全不知道是怎么回事,痛定思痛,发现了解问题的本质还是需要从源码看起。 可以保存一些线程私有的数据,从而避免多线程环境下的数据共享问题。 存储数据的功能是通过 实现的,这是 的一个静态内部类。 源码加注释总共 多行, 就占据了接 阅读全文
posted @ 2020-03-06 19:58 纳兰小依 阅读(152) 评论(0) 推荐(0) 编辑
摘要:`CountDownLatch CountDownLatch AbstractQueuedSynchronizer AQS CountDownLatch AQS`,逻辑有些绕,要理清中间的逻辑稍微要费一些时间。 1.内部类Sync 的核心功能是通过内部类 实现的,这个类继承了 : 2.构造器 只有一 阅读全文
posted @ 2020-03-01 20:48 纳兰小依 阅读(119) 评论(0) 推荐(0) 编辑
摘要:ConcurrentHashMap源码探究 (JDK 1.8) 阅读全文
posted @ 2020-02-28 21:05 纳兰小依 阅读(172) 评论(0) 推荐(0) 编辑
摘要:1.模式简介 备忘录模式能够在不破坏封装性的前提下,实现对象状态的保存和恢复工作,又叫快照模式或Token模式。保存对象的状态是为了以后在需要的时候快速恢复到保存时的状态,因此常用在备份、撤销操作上,例如编辑器里的撤销、游戏里的存档和悔棋等功能。 备忘录模式有三个组成部分: Originagor(发 阅读全文
posted @ 2019-12-01 23:56 纳兰小依 阅读(369) 评论(2) 推荐(1) 编辑
摘要:计算数字的二进制形式中1的数量有许多不同的方法,variable precision SWAR算法是其中最快的。它通过若干位运算,将计算过程优化到常数时间。由于算法设计得非常简洁精巧,初看之下有些云里雾里,所以在这里记录下对算法的理解,方便日后查看。 阅读全文
posted @ 2019-11-17 14:00 纳兰小依 阅读(165) 评论(0) 推荐(0) 编辑
摘要:建造者模式(Builder Pattern)属于创建型模式中的一种,在创建比较复杂的对象,或者对象包含多个组成部分时比较有用,用于将对象的创建过程与使用分离,隔离具体的创建细节,方便以后的扩展。 阅读全文
posted @ 2019-11-09 14:02 纳兰小依 阅读(258) 评论(0) 推荐(1) 编辑