首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
彤哥读源码
掘友等级
后台开发工程师
|
保密
获得徽章 0
动态
文章
专栏
沸点
收藏集
关注
作品
赞
105
文章 105
沸点 0
赞
105
返回
|
搜索文章
最新
热门
死磕 java同步系列之JMM(Java Memory Model)
Java内存模型是在硬件内存模型上的更高层的抽象,它屏蔽了各种硬件和操作系统访问的差异性,保证了Java程序在各种平台下对内存的访问都能达到一致的效果。 在正式讲解Java的内存模型之前,我们有必要先了解一下硬件层面的一些东西。 在现代计算机的硬件体系中,CPU的运算速度是非常…
死磕 java同步系列之开篇
同步系列,这是彤哥想了好久的名字,本来是准备写锁相关的内容,但是java中的CountDownLatch、Semaphore、CyclicBarrier这些类又不属于锁,它们和锁又有很多共同点,都是为了协同多线程的执行,都是一种同步器,所以这里就借用同步来取名字了,也就是“同步…
死磕 java原子类之终结篇(面试题)
原子操作是指不会被线程调度机制打断的操作,这种操作一旦开始,就一直运行到结束,中间不会有任何线程上下文切换。 原子操作可以是一个步骤,也可以是多个操作步骤,但是其顺序不可以被打乱,也不可以被切割而只执行其中的一部分,将整个操作视作一个整体是原子性的核心特征。 在java中提供了…
死磕 java并发包之LongAdder源码分析
LongAdder是java8中新增的原子类,在多线程环境中,它比AtomicLong性能要高出不少,特别是写多的场景。 它是怎么实现的呢?让我们一起来学习吧。 LongAdder的原理是,在最初无竞争时,只更新base的值,当有多线程竞争时通过分段的思想,让不同的线程更新不同…
杂谈 什么是伪共享(false sharing)?
CPU 是计算机的心脏,所有运算和程序最终都要由它来执行。 主内存(RAM)是数据存放的地方,CPU 和主内存之间有好几级缓存,因为即使直接访问主内存也是非常慢的。 如果对一块数据做相同的运算多次,那么在执行运算的时候把它加载到离 CPU 很近的地方就有意义了,比如一个循环计数…
死磕 java并发包之AtomicStampedReference源码分析(ABA问题详解)
AtomicStampedReference是java并发包下提供的一个原子类,它能解决其它原子类无法解决的ABA问题。 ABA问题发生在多线程环境中,当某线程连续读取同一块内存地址两次,两次得到的值一样,它简单地认为“此内存地址的值并没有被修改过”,然而,同时可能存在另一个线…
杂谈 论实例化类的第六种方式
最后一种通过Unsafe实例化的类,里面的age的值竟然是0,而不是10或者20。 这是因为调用Unsafe的allocateInstance()方法只会给对象分配内存,并不会初始化对象中的属性,所以int类型的默认值就是0。 欢迎关注我的公众号“彤哥读源码”,查看更多源码系列…
死磕 java并发包之AtomicInteger源码分析
AtomicInteger是java并发包下面提供的原子类,主要操作的是int类型的整型,通过调用底层Unsafe的CAS等方法实现原子操作。 原子操作是指不会被线程调度机制打断的操作,这种操作一旦开始,就一直运行到结束,中间不会有任何线程上下文切换。 原子操作可以是一个步骤,…
死磕 java魔法类之Unsafe解析
本章是java并发包专题的第一章,但是第一篇写的却不是java并发包中类,而是java中的魔法类sun.misc.Unsafe。 Unsafe为我们提供了访问底层的机制,这种机制仅供java核心类库使用,而不应该被普通用户使用。 但是,为了更好地了解java的生态体系,我们应该…
死磕 java集合之终结篇
我们先来看一看java中所有集合的类关系图。 这里面的类太多了,请放大看,如果放大还看不清,请再放大看,如果还是看不清,请放弃。 我们下面主要分成五个部分来逐个击破。 List中的元素是有序的、可重复的,主要实现方式有动态数组和链表。 java中提供的List的实现主要有Arr…
下一页
个人成就
优秀创作者
文章被点赞
1,195
文章被阅读
237,912
掘力值
7,518
关注了
0
关注者
2,943
收藏集
1
关注标签
158
加入于
2016-08-28