
多线程
文章平均质量分 82
Forever_and_ever
这个作者很懒,什么都没留下…
展开
-
ReentrantReadWriteLock源码分析
ReentrantReadWriteLock是基于AQS实现的读写锁,读锁与读锁不互斥、读锁与写锁互斥、写锁与写锁互斥。AQS提供了共享和排它两种模式,acquire/release、acquireShared/releaseShared 是AQS里面的两对模板方法。写锁是基于acquire/release模板方法实现的,读锁是基于acquireShared/releaseShared这对模板方法实现的。WriteLockacquire public final void acqu...原创 2024-05-08 23:54:59 · 376 阅读 · 0 评论 -
ReentrantLock源码分析
ReentrantLock是Concurrent包提供的一种可重入锁。可重入锁是指当一个线程获取锁进入互斥区后可以再次拿到该锁,而不需要释放之前获取的锁。通常锁都需要设计成可重入的,否则很容易发生死锁。ReentrantLock 是基于AQS来实现的,AQS也叫抽象同步队列器,是Concurrent包提供的一种实现同步队列的框架。AQS类结构如下:AbstractOwnableSynchronizer 是一个抽象类,只有一个成员变量exclusiveOwnerThread,表示持有锁的对象.原创 2021-05-07 15:48:51 · 203 阅读 · 1 评论 -
UncaughtExceptionHandler 获取线程运行时异常
我们知道线程执行体的方法接口定义为:public void run(),因此线程在执行单元中是不允许抛出checked异常的,且线程之间是相对独立的,他们运行在自己的上下文当中,派生它的线程无法直接感知到它在运行时出现的异常信息。为了解决这个问题,java提供了UncaughtExceptionHandler接口,当线程在运行时发生异常时,会回调这个接口,从而得知哪个线程在运行时出错。Unca...原创 2020-04-14 16:26:01 · 798 阅读 · 0 评论