9月 212020
 

我个人觉得,学习源码的姿势,首先是需要知道想学习的框架/工具如何使用,然后接下来再去看源码注释,看看当时代码作者是如何阐述代码的,再去看代码怎么编写,效果才最佳。

同样的,接下来要分析的线程池,首先用途自不必说,不管有没有用过,ThreadPoolExecutor的运行机制、传说中的7个参数(核心线程数corePoolSize、最大线程数maxPoolSize、等待时间keepAliveTime、时间单位timeUnit、阻塞队列blockingQueue、线程工厂threadFactory、拒绝策略rejectHandler),相信大家都已经熟练掌握,此处不再赘述。

接下来简单过一下ThreadPoolExecutor的注释。
Continue reading »

5月 272020
 

从一道面试题讲起:采用DCL实现单例模式时,是否需要加volatile关键字?为什么?

有关单例模式

我们在网上搜如何实现单例模式时,帖子往往给出多种实现:饿汉模式、懒汉模式、双重锁懒汉模式(双重锁检查,double check lock,经常简写做DCL)、静态内部类模式、枚举模式等。

此处可以参考 深入理解单例模式:静态内部类单例原理 这篇文章。

顺带提一句,《Java并发编程的艺术》(方腾飞)第3章有讨论过DCL、静态内部类这两种实现方式,建议去读一读。 Continue reading »

9月 132019
 

课程链接

课程:https://url.163.com/VD8

java锁

synchronized

在jdk 1.5以后,优化了,使其性能并不是像很多帖子说的那样,“非常重”

JUC lock

方法 说明
lock() 获取锁,如果锁被暂用则一直等待
tryLock() 如果获取锁的时候锁被占用就返回false,否则返回true
tryLock(long time, TimeUnit unit) 比起tryLock,多出等待时间
unLock()
lockInterruptibly()

Continue reading »