首页
AI Coding
数据标注
NEW
沸点
课程
直播
活动
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
登录
注册
松烟落尽
掘友等级
获得徽章 0
动态
文章
专栏
沸点
收藏集
关注
作品
赞
10
文章 10
沸点 0
赞
10
返回
|
搜索文章
赞
文章( 10 )
沸点( 0 )
垃圾收集算法和常用的垃圾收集器学习记录
由于程序计数器和虚拟机栈都是线程私有的,随线程而生,随线程而灭,不需要我们关注。 堆和方法区有着很大的不确定性,我们所关注的正是这部分内存区域。 当前主流的虚拟机,都是通过可达性分析算法判断对象是否可以被回收。 通过一系列称为 "GC Roots" 的根对象作为起始节点集 ,从…
并发编程第十天----HashMap 与 ConcurrentHashMap 源码解析
。 hash 表综合了他们的优点,采用键值对形式存储,能根据键快速地取到相应的值,底层结构(JDK 1.8后)是数组+链表+红黑树。 本文分析的源码基于 JDK 1.8 ,数据存储在 Node 节点中。 tableSizeFor() 通过位移算法,返回大于等于给定目标数值的最小…
并发编程第九天---公平、非公平、读写锁源码
ReentrantLock 是可重入的独占锁,是用 AQS 来实现的,以下是其类图结构。 ReentrantLock 有两种锁模式,公平模式和非公平模式,我们先来看看非公平是如何体现的。 先尝试获取锁的线程并不一定比后尝试获取锁的线程优先获得锁,比如:线程 A 尝试获取锁,然后…
并发编程第八天--------大厂必问之 AQS 源码解析
LockSupport 是个工具类,主要作用是挂起和唤醒线程,该工具类是创建锁和其他同步类的基础。 LockSupport 类与每个使用他的线程都会关联一个许可证,在默认情况下调用 LockSupport 类方法的线程是不持有许可证的。LockSupport 使用 Unsafe…
并发编程第七天----CopyOnWriteArrayList 实现原理
ArrayList 相信大家都用过,我们来看看它在并发下的缺陷。 在遍历集合的过程中,如果对集合做了修改,会抛出 ConcurrentModificationException 异常,在 Java 中,for 循环遍历集合会转换成 Iterator 遍历,我们来看看迭代器遍历时…
并发编程第六天----LongAdder源码深度解析
AtomicLong 通过 CAS 提供了非阻塞的原子性操作,性能比使用同步锁好多了。但是在高并发情况下,大量线程争夺同一个原子变量,只有一个线程的 CAS 能操作成功,其他线程会不停地 CAS 自旋,极度浪费 CPU 资源。 为了解决这个问题,JDK8 提供了一个类 Long…
并发编程第五天----ThreadLocalRandom源码解析
Random 类在我们开发中很常用,可以生成随机数,我们来分析一下他的执行原理以及缺陷。 随机数的生成需要一个种子(一个 long 类型的变量),并根据种子通过某种固定算法生成随机数。 当种子固定时,生成的随机数也一样。 在单线程情况下每次调用 nextInt() 都是根据老的…
java并发编程第四天---ThreadLocal使用及源码分析
多线程访问同一个共享变量时特别容易出现并发问题,为了保证线程安全,一般使用者在访问共享变量时需要进行适当的同步,同步的措施一般是加锁,但加锁会影响性能。 那么有没有一种方式可以做到,当创建变量后每个线程对其进行访问的时候,访问的是自己线程的变量呢? ThreadLocal 就可…
java并发编程第二天--内存可见性问题
图中是个双核 CPU 系统架构,每个核都有自己的 1 级缓存 (L1) ,还有个所有CPU共享的二级缓存 (L2),Java 中的工作内存就对应着 1 级缓存加上一些硬件。 当一个线程操作共享变量时,它首先从主内存复制共享变量到自己的工作内存,然后对工作内存里的变量进行处理,处…
java并发编程第一天-java内存模型与线程
进程: 程序在数据集合上的一次运行活动,是操作系统进行资源分配和调度的基本单位。 线程: 进程的一个执行路径,一个进程中有多个线程,进程中的多个线程共享进程的资源,线程是 CPU 分配的基本单位。 在 Java 中,启动 main 函数就是启动了一个 jvm 进程, main …
下一页
关注了
16
关注者
1
收藏集
0
关注标签
9
加入于
2020-04-11