JAVA并发编程
burg_xun
热爱运动
展开
-
Java多线程-ThreadPoolExecutor是怎么去执行一个任务的?源码分析
前言前面一遍文章 我们看了下FutureTask的源码,知道了怎么样去获取一个任务的返回值,今天我们看下ThreadPoolExecutor。ThreadPoolExecutor 看名词 我们就可以 看做是ThreadPool 和Executor的结合,大概意思我们也能知道就是线程池执行器,哈哈这翻译 真棒。这篇博文 会从源码的角度去分析下 一个线程任务 加入的线程池以后 是怎么被执行的~线程池上面 说线程的时候 我们也说过 线程是系统中极其珍贵的资源,那我们要合理的使用他,所以有了线程池的出现,那原创 2020-07-20 12:03:41 · 1075 阅读 · 0 评论 -
你知道ThreadPoolExecutor是怎么存储线程池状态和线程数量的么?
前言最近在看ThreadPoolExecutor的源码,里面在处理存储线程池的状态和线程池里面的大小感觉特比有意思,所以单独拿出来和大家分享下~怎么去存储状态和工作线程数,我们一步步的来看看,最后最下总结,总结下为什么这么去做分析 private final AtomicInteger ctl = new AtomicInteger(ctlOf(RUNNING, 0)); private static final int COUNT_BITS = Integer.SIZE - 3;//原创 2020-07-17 00:44:40 · 1120 阅读 · 3 评论 -
Java多线程-FutureTask是如果获取返回值的?
简介本篇 是Java 多线程的 开篇,这篇 主要简单的聊了下线程的几种创建方式,然后从源码的角度去分析了下FutureTask,FutureTask这个类 既和Callable有关系,又和Runnable有关联,并且是实现了Future这个接口,能够很好的管理我们的Callable或者Runnable。线程我们简单说下线程:线程是操作系统能够调度的最小单位,它是被包含的在进程中执行的,一个进程中可以包含多个线程,每个线程执行不同的任务。线程的几种状态线程的几种创建关于 这个问题 有人说 三种创原创 2020-07-11 18:51:14 · 1421 阅读 · 0 评论 -
HashMap 容量大小的问题-为什么长度都是2的幂?
前言在之前的文章 我分析过HashMap 初始化容量的问题 不清楚的可以看这个。经过这篇文章 我们知道了 HashMap是什么时候 设置容量大小的,容量大小和容量的阀值 是怎么计算的,但是有的小伙伴 包括我 可能对一点比较好奇 为什么默认的容量是16 而且计算是自己容量的时候,最终计算出来的容量也是2的幂次方?可能 有的小伙伴知道 这个是为了 降低哈希碰撞率,那是为什么呢?那我们今天就来聊一聊分析容量计算 /** * Returns a power of two size f原创 2020-07-07 12:03:48 · 358 阅读 · 1 评论 -
ConcurrentHashMap 怎么样去保证线程安全的, 读操作为什么不需要加锁
ConcurrentHashMap前言分析初识ConcurrentHashMap数据结构对比HashMap和ConcurrentHashMapConcurrentHashMapinitTable初始化put的线程安全transfer 扩容时的线程安全get总结前言最近在看公众号 看到一个问题:为什么 ConcurrentHashMap 的读操作不需要加锁?第一次看到这个问题的时候 我也确实比较懵逼 我虽然知道ConCurrentHashMap 是怎么在put的时候 去保证线程安全的,但是真的没关注原创 2020-07-01 23:18:26 · 2028 阅读 · 0 评论 -
带你看看Java的锁(三)-CountDownLatch和CyclicBarrier
带你看看Java中的锁CountDownLatch和CyclicBarrier前言基本介绍使用和区别核心源码分析总结前言Java JUC包中的文章已经写了好几篇了,首先我花了5篇文章从源码分析的角度和大家讲了AQS,为什么花5篇时间讲这个,是因为AQS真的很重要,JUC中提供的很多实现都是基于AQS的,所以说看懂AQS中的代码很重要,看不懂的 多看几遍,上网多找找文章,这个时...原创 2020-04-11 18:46:43 · 234 阅读 · 0 评论 -
带你看看Java的锁(二)-Semaphore
带你看看Java的锁-Semaphore前言简介使用源码分析类结构图SyncNonfairSyncFairSyncSemaphore 构造函数Semaphore 成员方法获取释放总结前言简介Semaphore 中文称信号量,它和ReentrantLock 有所区别,ReentrantLock是排他的,也就是只能允许一个线程拥有资源,Semaphore是共享的,它允许多个线程同时拥有资源,是A...原创 2020-04-09 01:52:43 · 213 阅读 · 1 评论 -
带你看看Java的锁(一)-ReentrantLock
带你看看Javad的锁-ReentrantLock前言ReentrantLock简介Synchronized对比用法源码分析代码结构方法分析SyncNonfairSyncFairSync非公平锁VS公平锁什么是公平非公平ReentrantLockReentrantLock的构造函数lock加锁方法非公平的加锁公平的加锁unlock解锁总结公平锁 VS 非公平锁Synchronized VS Ree...原创 2020-04-05 19:49:10 · 267 阅读 · 0 评论