logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

Java 并发 100 问:从面试到生产(二)

Java并发编程中,Lock相比synchronized的主要优势包括:支持可中断锁获取、非阻塞尝试锁、公平锁机制、多条件变量绑定、读写锁分离以及锁状态监控。而基本类型包装类和String因不可变性本身线程安全,但引用可变时仍需同步。活锁是线程持续重试却无法推进的现象,可通过引入随机性和限制重试次数解决。使用wait/notify时必须用while循环而非if以避免虚假唤醒。Log4j的Async

#java#面试
Java 并发 100 问:从面试到生产(一)

既保证了数据的一致性(自己读到的一定是自己刚写的),又提高了并发度(读的时候允许别人也来读)。不可以,CallerRunsPolicy会让提交任务的线程来执行任务,有可能会造成Tomcat 的Worker 线程被全部耗尽并阻塞。属性,但实际上它包含了两部分信息:隐式的弱引用 Key(在父类里)和显式的强引用 Value(在自己里)。如果连自己读自己的数据都要阻塞,那就违背了锁的初衷(锁是用来防止别

#java#面试
Java 并发 100 问:从面试到生产(三)

文章摘要 本文围绕Java线程安全问题展开,首先提出判断线程安全的三个必要条件:共享可变状态、原子性、可见性和有序性。通过分析Java内存模型(JMM)特性,总结了排查线程安全隐患的清单。接着对比传统线程与JDK 21虚拟线程的差异,指出虚拟线程通过用户态调度和轻量级栈解决了OS线程资源开销大、上下文切换代价高等问题,适合高并发I/O场景,如Web服务、微服务调用等,但不适合CPU密集型任务。最后

#java#面试
Java 并发 100 问:从面试到生产(三)

文章摘要 本文围绕Java线程安全问题展开,首先提出判断线程安全的三个必要条件:共享可变状态、原子性、可见性和有序性。通过分析Java内存模型(JMM)特性,总结了排查线程安全隐患的清单。接着对比传统线程与JDK 21虚拟线程的差异,指出虚拟线程通过用户态调度和轻量级栈解决了OS线程资源开销大、上下文切换代价高等问题,适合高并发I/O场景,如Web服务、微服务调用等,但不适合CPU密集型任务。最后

#java#面试
万物皆可对账:一种被低估的系统化思维模型

Never Trust, Always Verify” (永不轻信,永远验证)。1.承认不完美:任何网络不可靠、任何节点会宕机、任何代码有Bug。对账是基于“系统一定会出错”的假设来设计的。2.追求最终一致:我们放弃强一致的执念,接受过程中的不一致,但通过持续的对账与自愈,保证最终结果的正确。3.业务闭环的锚点:没有对账,系统的运行就没有尽头。对账是划分“责任边界”的利器——对账平了,上一段流程才

#软件工程
到底了