首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
Java场景面试题
用户6854537597769
创建于2025-10-08
订阅专栏
用于场景面试
等 7 人订阅
共274篇文章
创建于2025-10-08
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
DCL双重检查锁定的陷阱与修复💣
一、经典DCL单例模式 错误的实现❌ 二、问题:指令重排序 字节码分析 实际执行三步: 分配内存空间 初始化对象 instance指向内存 可能重排序为: 分配内存 instance指向内存(此时对象
线程安全过期缓存:手写Guava Cache🗄️
一、开场:缓存的核心需求🎯 基础需求 线程安全:多线程并发读写 过期淘汰:自动删除过期数据 容量限制:防止内存溢出 性能优化:高并发访问 生活类比: 缓存像冰箱🧊: 存储食物(数据) 定期检查过期(过
线程池拒绝策略:优雅说不的艺术🚫
一、开场:线程池什么时候会拒绝任务?🤔 触发拒绝的条件 拒绝时机: 可视化: 二、JDK自带的4种拒绝策略🎯 策略1:AbortPolicy(中止策略)⛔ 默认 特点: 直接抛出RejectedExe
CopyOnWriteArrayList:写时复制的艺术🎨
一、开场:并发List的痛点😫 问题1:ArrayList线程不安全 问题: 数组扩容时并发修改 size计数不准确 数据丢失或覆盖 问题2:Collections.synchronizedList性
手写读写公平锁:公平与性能的博弈⚖️
一、开场:什么是公平锁?🤔 公平 vs 非公平 非公平锁(Unfair Lock): 线程抢锁,谁抢到算谁的 可能导致饥饿:某些线程永远抢不到 公平锁(Fair Lock): 线程排队,先来先服务(F
LongAdder:分治思想吊打AtomicLong🚀
一、开场:AtomicLong的性能瓶颈💔 场景:高并发计数器 问题: 生活类比: AtomicLong像单一收银台🏪: 100个顾客排一队 一个收银员处理 越排越长,效率越低 LongAdder像多
CAS的ABA问题:看似未变实则沧海桑田🔄
一、开场:CAS的魔法与陷阱🎩 CAS是什么? CAS = Compare And Swap(比较并交换) 原子操作: 比较和交换是一条CPU指令,不会被中断。 生活类比: 你去超市买牛奶🥛: 看到货
线程中断机制:优雅停止线程的艺术🛑
一、开场:停止线程的血泪史😭 远古时代:Thread.stop()(已废弃) 问题: 💥 立即终止,不管在干什么 💣 释放所有锁,可能导致数据不一致 🔥 资源泄漏,finally块不执行 例子:转账被
wait和notify必须在synchronized中:Monitor的铁律🔐
一、开场:一个IllegalMonitorStateException💥 代码炸弹 异常信息: 为什么会报错? 因为没有持有Monitor锁! 二、什么是Monitor?🔍 Monitor对象监视器
happens-before原则:多线程的时间法则⏰
一、开场:诡异的多线程现象👻 问题:这段代码会输出什么? 可能的输出: 1(正常) 什么都不输出(flag还是false) 0(诡异!) 😱 为什么会输出0? 因为: 编译器可能重排序:先执行②再执行
手写高性能生产者消费者队列:从原理到实战🛠️
一、生产者-消费者模式:经典场景🎬 生活类比 想象一个奶茶店🧋: 生产者: 制作奶茶的员工(可能有多个) 消费者: 打包外卖的员工(可能有多个) 队列: 柜台上的等待区 问题: 奶茶做快了,柜台放不下
Disruptor:无锁并发的终极武器🚀
一、开场:性能对比震撼登场⚡ 实测数据(单生产者单消费者) 队列类型 吞吐量(ops/sec) 性能倍数 ArrayBlockingQueue 500万 1x LinkedBlockingQueue
CompletableFuture:异步编程的优雅艺术🎨
一、开场:异步编程的痛点😫 远古时代:回调地狱 问题: 嵌套太深,像俄罗斯套娃🪆 异常处理困难 代码难以维护 现代解决方案:CompletableFuture 优势: 链式调用,清晰流畅✨ 统一的异常
StampedLock:读写锁界的闪电侠⚡
一、开场白:为什么要有StampedLock?🤔 想象一下这个场景: 你开了一家图书馆📚,用ReadWriteLock管理: 读者(读线程)可以同时进来很多人看书 管理员(写线程)要整理书架时,所有读
🎪 并发工具类终极对比:CountDownLatch、CyclicBarrier、Semaphore、Phaser
一、四大金刚登场 🎬 快速识别表 工具类 一句话描述 生活比喻 CountDownLatch 等待N个事件完成 🎆 等所有烟花准备好再一起放 CyclicBarrier N个线程互相等待 🏃 跑步比赛
🍴 ForkJoinPool工作窃取算法:分治思想的极致体现!
一、什么是ForkJoin?🤔 核心思想:分而治之(Divide and Conquer) 一句话总结: 把大任务**拆分(Fork)成小任务,并行执行后再合并(Join)**结果! 生活比喻: 经典
⚙️ 线程池参数调优秘籍:IO密集vs CPU密集的终极对决!
一、线程池核心参数全解析 📊 ThreadPoolExecutor构造函数 一句话总结: 线程池就像一个外包公司 🏢,核心员工、临时工、任务队列、应对策略,都需要精心设计! 二、七个参数详解 🔍 1️
🆘 线上死锁救援指南:从发现到解决的完整攻略!
一、什么是死锁?💀 经典比喻:两个人过独木桥 代码演示 输出: 死锁的四个必要条件 🔐 死锁必须同时满足以下四个条件: 生活比喻: 二、线上死锁发现:症状识别 🔍 症状1:系统突然卡住 症状2:线程池
⚡ volatile全解析:可见性与有序性的魔法!
一、什么是volatile?🔮 一句话总结: volatile是Java提供的轻量级同步机制,保证变量的可见性和有序性,但不保证原子性! 二、可见性问题:看不见的修改 👻 问题场景 预期结果: 实际结
🚫 ConcurrentHashMap为啥不让放null?设计哲学大揭秘!
一、现象:null引发的惨案 💥 实验1:HashMap允许null 实验2:ConcurrentHashMap拒绝null 源码验证: 问题来了:为什么要这么设计?🤔 二、核心原因:二义性问题(Am
下一页