-
线程池的理解、分析
前言前阵子看唯品会开发指南VJTools 关于多线程开发这块儿,在开发中,为了保护线程资源,建议不要自己创建线程,因为线程的创建和销毁是很耗费资源的操作,直接 new 再 start 可能会无限制新建线程,为了更好地管理、利用线程资源可以将一些线程进... -
ConcurrentHashMap那些事儿
今天回顾总结下ConcurrentHashMap的一些东西,众所周知,HashMap 不是线程安全的,而ConcurrentHashMap 是线程安全的,所以前阵子总结完多线程的相关知识点后再分析 ConcurrentHashMap 就会轻松很多。 ... -
原子类 AtomicInteger
前言当多线程更新某个共享变量时,可能会出现非预期结果,比如i++这样的操作,解决的办法有使用synchronized 或者 Lock 锁,但这样做其实让多线程不会同时更新这个变量,虽然线程安全了,但存在效率、性能问题。 jdk1.5提供了一系列原子操... -
BlockingLock 阻塞队列
阻塞队列BlockingQueueBlockingQueue 是一个接口,继承自 Queue,Queue继承自 Collection 接口, BlockingQueue插入和移除的4中处理方式: 方法/处理方式 抛出异常 返回bool... -
ReentrantLock那些事儿(二)
接着上篇写,了解了什么是公平锁和非公平锁的概念后,继续分析 ReentrantLock,它使用一个静态抽象类 Sync来管理公平锁和非公平锁: 123abstract static class Sync extends AbstractQueuedS... -
ReentrantLock那些事儿(一)
ReentrantLock 是 Lock 的一个子类,和 synchronize 一样称之为可重入锁,它有着和 synchronize 同样的内存语义,但功能比 synchronize 功能更多,使用起来更为灵活。 可重入锁:能够支持对资源的重复加... -
Lock And AQS
锁是用来控制多线程访问共享资源的一种方式,一般情况下,锁可以防止多个线同时访问共享资源,但有些锁可以允许多个线程并发地访问共享资源,如读写锁中的读锁。 Lock 接口一般情况下,我们常用 synchronized 关键字来实现锁的功能,前面提到 sy... -
synchronized关键字总结
在并发编程中,synchronized 关键字非常常见,在 JDK 源码中也有很多,典型基础的类有 StringBuffer,我们知道 StringBuilder 是非线程安全的,StringBuffer 是线程安全的,就是因为 StringBuff... -
LinkedHashMap那点事儿
是前面分析了 HashMap 源码,今天分析下 LinkedHashMap,废话不多说直接开始。 LinkedHashMap众所周知,HashMap 里的元素是无序的。如果想按照一定的顺序,比如插入顺序来访问元素,就需要 LinkedHashMap ... -
HashSet那点事儿
在复习完 HashMap 后,今天学习 HashSet,在日常开发中我们常用它来存储不重复元素, HashSet 是基于 HashMap 的,它巧妙地利用了 HashMap 的 key 不可重复的特性,我们在向 HashSet 中添加元素时,实际上是...