首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
德玛杰
掘友等级
java后端开发
www.dema666.top
获得徽章 0
动态
文章
专栏
沸点
收藏集
关注
作品
赞
19
文章 18
沸点 1
赞
19
返回
|
搜索文章
最新
热门
java8 Stream 流快速入门
Java 8 中,得益于 lambda 带来的函数式编程,引入了一个全新的 Stream流 概念,用于解决集合已有的弊端。 筛选出 names 中以 '张' 开头的字符串得到子集1,再筛选出 子集1 中长度为 3 的字符串,然后遍历输出。 可以看到用 stream 流方式比传统…
垃圾收集算法和常用的垃圾收集器学习记录
由于程序计数器和虚拟机栈都是线程私有的,随线程而生,随线程而灭,不需要我们关注。 堆和方法区有着很大的不确定性,我们所关注的正是这部分内存区域。 当前主流的虚拟机,都是通过可达性分析算法判断对象是否可以被回收。 通过一系列称为 "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并发编程第三天---实现原子操作
所谓原子操作,就是指不可中断的一个或一系列操作。 例如 i++,就不是原子操作,它包括 读取、更新、写入 三步原子操作。 非原子操作在多线程环境下会导致线程安全问题,Java 中可以通过 监视器锁 或 CAS 来实现原子操作。 给非原子操作所在的方法加上监视器锁,保证了同一时刻…
下一页
个人成就
文章被点赞
98
文章被阅读
14,327
掘力值
525
关注了
8
关注者
48
收藏集
0
关注标签
3
加入于
2020-05-23