多线程
哲里哲里
更好的自己
展开
-
concurrenthashmap 源码分析(四 ) - addCount() 方法
在putVal 方法的最后会调用 addCount方法从 putVal 传入的参数是( 1, binCount),binCount 默认是0,只有 hash 冲突了才会大于 1.且他的大小是链表的长度,红黑树是2来看下源码:/** * Adds to count, and if table is too small and not already * resiz...原创 2020-04-24 01:16:54 · 879 阅读 · 0 评论 -
concurrenthashmap 源码分析(三) - transfer() 方法
一、当 node 的 hash 等于 MOVED的时候会进行helpTransfer方法也就是当发现其他线程正在扩容的时候,当前线程去帮助扩容/** * Helps transfer if a resize is in progress. */ final Node<K,V>[] helpTransfer(Node<K,V>[] ta...原创 2020-04-24 00:06:11 · 723 阅读 · 0 评论 -
concurrenthashmap 源码分析(二) - initTable() 方法
前一章我们在putVal 方法中看到,当 node 的 hash 等于 MOVED的时候会进行helpTransfer方法也就是当发现其他线程正在扩容的时候,当前线程去帮助扩容 /** * Helps transfer if a resize is in progress. */ final Node<K,V>[] helpTransfer(No...原创 2020-04-23 00:05:57 · 931 阅读 · 0 评论 -
concurrenthashmap 源码分析(一) - putVal() 方法
这篇文章主要分析putVal方法的源码,这里面也包括了 concurrenthashmap大部分的常用的方法,例如 initTable、spread、transfer、treeifyBin、addCount等等一、概述A hash table supporting full concurrency of retrievals and high expected concurr...原创 2020-04-10 09:17:05 · 759 阅读 · 0 评论 -
AQS 源码分析(三)--------CLH 队列 和 Condition 队列
这篇文章我们来一起学习下AQS中的 ConditonObject ,并以ReentrantLock为例子来分析下CLH 队列和 Condition队列之间的转换过程,如果有不对的地方,欢迎大佬指正!一 lock 与 synchronized 的比较synchronized 关键字:java提供了内置锁来支持多线程的同步,JVM会根据synchronized 关键字来标识同步代码块,当线程进...原创 2020-03-31 00:25:37 · 1325 阅读 · 0 评论 -
AQS 源码分析(二)-------共享锁
上一篇主要介绍了AQS排它锁的acquire 和 release,这篇文章我们来一起学习下共享锁的实现。与获取独占锁不同的是,共享锁允许多个线程持有。我们先看下 tryAcquireShared 返回参数的含义: * @return a negative value on failure; zero if acquisition in shared * ...原创 2020-03-28 19:54:37 · 238 阅读 · 0 评论 -
AQS-源码分析(一)-------排它锁
最近仔细学习了一下java AbstractQueuedSynchronizer 的源码,这里来一起分享下,如果有错误的地方,欢迎指正!我们将会从一下几个方面介绍:一、简介AQS是Doug Lea 大师创作用来构建锁或其他同步组建的基础框架类。AQS主要采用模板方法实现同步原语,以简化并发工具的内部实现,AQS主要做了三件事情:同步状态的管理,主要是通过state变量 线程...原创 2020-03-27 14:23:34 · 248 阅读 · 0 评论 -
ThreadPoolExecutor-线程池源码 look look
最近仔细学习了一下java 线程池的源码,这里来一起分享下,如果有错误的地方,欢迎指正!我们将会从一下六个方面介绍:二、构造参数corePoolSize:线程池核心线程数大小 maximumPoolSize:线程池线程数最大值,达到最大值后线程池不会再增加线程执行任务 keepAliveTime:线程池中超过corePoolSize数目的空闲线程最大存活时间 allowCor...原创 2020-03-12 00:51:39 · 567 阅读 · 0 评论 -
ThreadLocal 使用和原理
这篇文章会从三个方面来说说ThreadlocalThreadLocal用在什么地方? ThreadLocal的get/set源码分析! ThreadLocal的使用方法!1、ThreadLocal用在什么地方?1.1)保存线程上下文信息,在任意需要的地方可以获取。 例如Spring的事务管理,用ThreadLocal存储Connection,从而各个DAO可以获取同...转载 2019-12-19 09:23:08 · 230 阅读 · 0 评论