首页
AI Coding
数据标注
NEW
沸点
课程
直播
活动
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
登录
注册
确定删除此收藏集吗
删除后此收藏集将被移除
取消
确定删除
确定删除此文章吗
删除后此文章将被从当前收藏集中移除
取消
确定删除
编辑收藏集
名称:
描述:
0
/100
公开
当其他人关注此收藏集后不可再更改为隐私
隐私
仅自己可见此收藏集
取消
确定
Java并发
订阅
未来之路
更多收藏集
微信扫码分享
微信
新浪微博
QQ
12篇文章 · 0订阅
万字图文 | 聊一聊 ReentrantLock 和 AQS 那点事(看完不会你找我)
AbstractQueuedSynchronizer(AQS)是 Java 并发编程中绕不过去的一道坎,JUC 并发包下的 Lock、Semaphore、ReentrantLock 等都是基于 AQS 实现的。AQS 是一个抽象的同步框架,提供了原子性管理同步状态,基于阻塞队列…
【JUC源码】关于线程池的几个问题
在文章的开始先放一个传送门 【JUC源码】线程池:ThreadPoolExecutor万字源码深析(超详细注释),如果对下面问题有什么不清楚的,可以参考源码源码进行理解。 答:以上 6 个类可以分成两大类:一种是定义任务类,一种是执行任务类。 定义任务类:Runnable、Ca…
【JUC源码】线程池:ThreadPoolExecutor万字源码深析(超详细注释)
在文章开始前,我们先看看线程池有什么作用。线程是一种稀缺资源,若不加以限制,不仅会占用大量资源,还会影响系统的稳定性。而线程池可以对线程的创建与停止、线程数量等等因素加以控制,使得线程在一种可控的范围内运行,不仅能保证系统稳定运行,而且方便性能调优。另外,每次请求到来时,由于线…
【JUC源码】线程池:创建线程池的参数设置思路&Excutors
大家对这几个参数应该都很熟悉了,虽然参数很少,但实际使用起来却有很多门道,大多数的问题主要集中在线程大小的设置,队列大小的设置两方面上,接下来我们一起看看工作中,如何初始化 ThreadPoolExecutor。 队列满时,此时因为 coreSize 和 maxSize 相等,…
异步化组件的场景选型及实现
在我们日常的开发过程中经常会碰到无血缘关系的流水账逻辑(数据补全, 通知逻辑等), 这个时候我们通常会采用异步化的方式去处理从而加快响应速度. 与此同时, 伴随着上下游依赖的服务变多, 对应的可能也会产生一系列的问题包括不限于问题难以排查, 性能难以保证等. 在闲鱼也不例外: …
一次性把Java的四种引用说清楚!
前几天在CodeReview的时候,看到了一个用WeakHashMap的代码,进而聊到了WeakReference,再聊到Java四种引用类型。 回想了一下,上次学习Java的强软弱虚四种引用类型,还是在准备面试的时候。平时用得不多,一下子竟然想不清楚它们的区别,只记得它们的强…
大神们是怎么使用ThreadLocal的?
这篇文章是关于ThreadLocal的第三篇文章。本文将挑选一些主流的Java开源框架,从源码上分析,大神们是如何使用ThreadLocal的,学习他们的设计思想。 Quartz是一个非常知名的开源任务调度系统。 我们要看的源码是Quartz的SimpleSemaphore这个…
线程调优总结(ThreadPoolExecutor)
线程与硬件CPU的核心数量和超线程都能影响软件线程的性能,通过使物理核心数量翻倍,也同样能让程序运行性能翻倍甚至更多,但是超线程技术并不能。本文接下来的例子都会在一个4物理核心,8逻辑核心的CPU上运
从 CPU 缓存看缓存的套路
不同存储技术的访问时间差异很大,从 计算机层次结构 可知,通常情况下,从高层往底层走,存储设备变得更慢、更便宜同时体积也会更大,CPU 和内存之间的速度存在着巨大的差异,此时就会想到计算机科学界中一句著名的话:计算机科学的任何一个问题,都可以通过增加一个中间层来解决。 为了解决…
反制面试官 | 14张原理图 | 再也不怕被问 volatile!
这一篇也算是Java并发编程的开篇,看了很多资料,但是轮到自己去整理去总结的时候,发现还是要多看几遍资料才能完全理解。还有一个很重要的点就是,画图是加深印象和检验自己是否理解的一个非常好的方法。 这是一份精心总结的Java内存模型思维导图,拿去不谢。 JMM是Java内存模型,…