首页
沸点
课程
数据标注
HOT
AI Coding
更多
直播
活动
APP
插件
直播
活动
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
登录
注册
确定删除此收藏集吗
删除后此收藏集将被移除
取消
确定删除
确定删除此文章吗
删除后此文章将被从当前收藏集中移除
取消
确定删除
编辑收藏集
名称:
描述:
0
/100
公开
当其他人关注此收藏集后不可再更改为隐私
隐私
仅自己可见此收藏集
取消
确定
java basic
订阅
zhangj711
更多收藏集
微信扫码分享
微信
新浪微博
QQ
10篇文章 · 0订阅
聊聊 Java 虚拟机:类的加载过程
我们都知道 Java 源文件通过编译器 javac 命令能够编译生成相应的 class 文件,即二进制字节码文件。Java 虚拟机将描述类或接口的 class 文件(准确地说,应该是类的二进制字节流)加载到内存,对数据进行校验、转换解析和初始化,最终形成能够被虚拟机直接使用的 …
AbstractQueuedSynchronizer原理剖析
无论是公平锁还是非公平锁,它们的实现都依赖于AbstractQueuedSynchronizer,它提供了一个基于先进先出等待队列 实现block locks和synchronizers的框架。特性如下 仅通过一个 int 类型来代表状态。对于ReentrantLock而言,他…
打通 Java 任督二脉 —— 并发数据结构的基石
Java 的线程阻塞和唤醒是通过 Unsafe 类的 park 和 unpark 方法做到的。 这两个方法都是 native 方法,它们本身是由 C 语言来实现的核心功能。park 的意思是停车,让当前运行的线程 Thread.currentThread() 休眠,unpark…
死磕java concurrent包系列(六)基于AQS解析信号量Semaphore
这个结构和ReentrantLock基本上完全一致,Semaphore内部同样存在继承自AQS的内部类Sync以及继承自Sync的公平锁(FairSync)和非公平锁(NofairSync),从这点也足以说明Semaphore的内部实现原理也是基于AQS并发组件的。 在之前的文…
并发优化 - 降低锁颗粒
减少锁的持有时间。 例如对一个方法加锁不如对其中的同步代码行加锁。 读写锁。 可只对锁操作加锁,读不加锁。这样读、读之间不互斥, 读、写和写、读互斥,可使用J.U.C中的ReadWriteLock。 减少锁颗粒。 如ConcurrentHashMap中对segment加锁,而不…
大白话聊聊Java并发面试问题之谈谈你对AQS的理解?【石杉的架构笔记】
上一篇文章聊了一下java并发中常用的原子类的原理和Java 8的优化,具体请参见文章:大白话聊聊Java并发面试问题之Java 8如何优化CAS性能?。 之前有同学反馈,去互联网公司面试,面试官聊到并发时就问到了这个问题。当时那位同学内心估计受到了一万点伤害。。。 因为首先,…
大白话聊聊Java并发面试问题之volatile到底是什么?【石杉的架构笔记】
前段时间把几年前带过的一个项目架构演进的过程整理了一个系列出来,参见(亿级流量架构系列专栏总结)。 不过很多同学看了之后,后台反馈说文章太烧脑,看的云里雾里。其实这个也正常,文章承载的信息毕竟有限,而架构的东西细节太多,想要仅仅通过文章看懂一个系统架构的设计和落地,确实难度不小…
BIO到NIO源码的一些事儿之NIO 上
此篇文章会详细解读NIO的功能逐步丰满的路程,为Reactor-Netty 库的讲解铺平道路。 接上一篇 BIO到NIO源码的一些事儿之BIO,我们来接触NIO的一些事儿。 在上一篇中,我们可以看到,我们要做到异步非阻塞,我们自己进行的是创建线程池同时对部分代码做timeout…
Volatile之Java内存模型概念
本文主要讲解Java内存模型和并发的基础概念,目的是为下文“volatile实践”一文做铺垫。 大家都知道,计算机在执行程序时,每条指令都是在CPU中执行的,而执行指令过程中,势必涉及到数据的读取和写入。由于程序运行过程中的临时数据是存放在主存(物理内存)当中的,这时就存在一个…
死磕java concurrent包系列(五)基于AQS的条件队列把LinkedBlockingQueue“扒光”
LinkedBlockingQueue是一个基于链表的阻塞队列,实际使用上与ArrayBlockingQueue完全一样,我们只需要把之前烤鸡的例子中的Queue对象替换一下即可。如果对于ArrayBlockingQueue不熟悉,可以去看看https://juejin.im/…