线程池是存放线程的容器,内部维护了若干个线程。通过利用线程池可以避免频繁创建线程,销毁线程带来的系统内耗,提高吞吐量。在Java中用Thread
对线程做了抽象,线程池的实现类是ThreadPoolExecutor
。但是线程之间的切换需要系统调用进内核,一旦线程池中线程的数量比较多,线程切换带来的内耗会制约系统吞吐量。协程(在Windows上称为纤程)本质上是用户态的线程,协程的调度不需要进内核,在用户态即可完成,所以相对线程,协程更加轻量。在Java中Quasar、 Loom库中实现了协程。
设计模式学习笔记
In software engineering, a software design pattern is a general, reusable solution to a commonly occurring problem within a given context in software design. It is not a finished design that can be transformed directly into source or machine code. It is a description or template for how to solve a problem that can be used in many different situations. Design patterns are formalized best practices that the programmer can use to solve common problems when designing an application or system.
J.U.C源码阅读笔记(四)Lock
Lock
接口下的锁是基于AQS实现的显式锁。具体有ReentrantLock
、ReentrantReadWriteLock.ReadLock
、ReentrantReadWriteLock.WriteLock
。相对于synchronized
隐式锁,这些锁更灵活。
J.U.C源码阅读笔记(三)同步器
同步器用来协助线程同步,具体有 CountDownLatch
、CyclicBarrier
、Semaphore
、Exchanger
。
J.U.C源码阅读笔记(二)并发容器
并发容器提供了线程安全的容器。比如线程安全的Map/Queue/List (ConcurrentHashMap
、BlockingQueue
、CopyOnWriteArrayList
),其它的还有阻塞队列,比如ArrayBolckingQueue
、LinkedBlockingQueue
、DelayQueue
、SynchronousQueue
J.U.C源码阅读笔记(一)AQS
AQS(AbstractQueuedSynchronizer
)这个类提供了一个框架用来实现阻塞锁和一些同步工具类。比如ReentrantLock
、ReadWriteLock
、Semaphore
、CountDownLatch
、CyclicBarrier
等。
Java容器框架源码阅读笔记(四)Map
java.util.Map框架: HashMappublic class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable 预备知识 红黑树 ...