![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
并发编程
文章平均质量分 68
coder_sheep
这个作者很懒,什么都没留下…
展开
-
JAVA并发编程-AQS底层实现原理及应用(二)
再回到acquireQueued代码,当parkAndCheckInterrupt返回True或者False的时候,interrupted的值不同,但都会执行下次循环。获取当前节点的前驱节点,如果前驱节点是cancel,就一直往前找,直到waitStatus还有一点原因,在产生CANCELLED状态节点的时候,先断开的是Next指针,Prev指针并未断开,因此也是必须要从后往前遍历才能够遍历完全部的Node。原创 2024-01-10 14:15:18 · 321 阅读 · 1 评论 -
JAVA并发编程-AQS底层实现原理及应用(一)
Java中的大部分同步类(CountDownLatch,Semaphore,CyclicBarrier、ReentrantLock等)都是基于AbstractQueuedSynchronizer(简称为AQS)实现的。AQS是一种提供了原子式管理同步状态、阻塞和唤醒线程功能以及队列模型的简单框架。本篇不讲述包含共享锁和Condition Queue的部分。//加锁//设置state 0没有线程持有锁,1有线程持有锁//释放锁//创建condition//模板方法。原创 2024-01-09 14:01:33 · 1507 阅读 · 0 评论 -
JAVA并发编程-从ReentrantLock看AQS实现源码解读
【代码】JAVA并发编程-从ReentrantLock看AQS实现源码解读。原创 2024-01-08 16:12:58 · 451 阅读 · 0 评论 -
JAVA并发编程-线程池实现原理解读(三)
线程池种线程的销毁依赖JVM的自动回收,线程池的工作时根据当前线程池的状态维护,线程的引用,当线程池决定哪些线程需要回收时,消除引用即可。worker被创建出来之后需要等待去获取任务,核心线程无限等待获取任务,非核心线程限时等待获取,当获取不到时执行processWorkerExit方法。如果firstTask时非null的,线程会在启动的时候就会执行这个任务,对应核心线程;线程池使用hashSet去维护线程的引用,通过增加引用,移除引用去控制线程的生命周期。这个时候需要判断线程是否运行。原创 2024-01-05 13:59:28 · 441 阅读 · 1 评论 -
JAVA并发编程-线程池实现原理解读(二)
线程池的本质是对线程和任务的管理,主要实现方式就是将任务和线程解耦,线程池中是以生产者和消费者的模式,通过阻塞队列实现。阻塞队列就是生产者存放元素的容器,消费者从容器拿元素。当用户提交一个任务之后,都是交给execute方法去执行的,这部分完成的工作主要是判断线程池状态,工作线程数,运行策略,决定接下来的执行流程:是直接申请线程执行,还是放到阻塞队列,还是直接拒绝。getTask做了多次判断,线程池状态,线程数,如果线程池不该持有那么多的线程就会返回null,工作线程worker接受不到任务时就会被回收。原创 2024-01-04 17:44:40 · 316 阅读 · 1 评论 -
JAVA并发编程-线程池实现原理解读(一)
线程管理是消费者,根据任务请求进行任务分配,当线程执行完任务后会继续获取新的任务执行,当获取不到任务的时候,线程会被回收(具体细节需要参考是否是核心线程,allowCoreThreadTimeout属性等)。def:是一种池化思想管理线程的工具,因为线程过多会带来额外的开销,比如线程的创建,线程的销毁,线程的调度。线程池维护多个线程,分配可并发的任务,避免创建销毁线程带来的开销,也避免了线程过多导致的过分调度问题。1、Executor 可以将任务的提交和每个任务运行的细节(线程使用调度)解耦。原创 2024-01-03 18:25:51 · 313 阅读 · 1 评论 -
JAVA并发编程-线程池源码解读
线程池中需要保留的线程数量,即使他们处于空闲状态,除非设置了allowCoreThreadTimeout。:任务执行之前,保存任务的队列,此队列仅保存由execute方法提交的runnable任务。:当线程数量大于核心线程时,这是多余线程在终止之前等待新任务的最长时间。:当线程数量达到最大值并且工作队列满了的时候会使用到这个handler。threadFactory:当执行器创建新线程时使用到这个工厂。:线程池里面允许存在的最大线程数量。:keepAliveTime的单位。原创 2023-12-21 17:37:57 · 394 阅读 · 0 评论 -
并发编程(一)
工欲善其事,必先利其器。原创 2023-08-08 14:39:54 · 35 阅读 · 0 评论