
多线程并发
文章平均质量分 90
搞不懂语言的程序员
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
什么是Java竟态条件?你如何发现并解决竞态条件?
fill:#333;color:#333;color:#333;fill:none;计数器集合类复杂对象状态机无共享通过失败发现竞态条件共享数据类型ThreadLocal/局部变量验证修复效果提交代码重新设计不可变对象核心原则优先无锁:使用原子类、并发容器次选细粒度锁:减小同步范围避免过度同步:警惕性能瓶颈设计即防御:默认不可变 + 线程封闭持续验证:压力测试+静态分析常态化竞态条件如同并发编程的"幽灵故障",需通过代码审查、工具检测、压力测试多管齐下才能有效捕获。原创 2025-08-05 15:23:41 · 965 阅读 · 0 评论 -
AQS的独占和共享?ReentrantReadWriteLock将独占和共享全部使用--源码解析。
写锁释放时,只直接唤醒一个线程;但 AQS 的共享传播机制让读线程自己继续唤醒后续所有读线程,直到写线程为止,从而实现了“写锁释放→所有读锁被唤醒”的效果。原创 2025-08-05 11:39:38 · 245 阅读 · 0 评论 -
Linux Epool的作用
是 Linux 下高效处理海量并发 I/O 事件(尤其是网络连接)的核心机制,通过事件表、就绪列表和回调避免了selectpoll的性能瓶颈,支持高效的 ET/LT 模式。通过 Java NIO (Selector) 间接使用。在 Linux 上通常底层使用epoll。你需要编写事件循环来处理ACCEPTREADWRITE等事件。直接使用 Java NIO API 构建高性能网络服务复杂度高。对于生产级应用,强烈推荐使用 Netty 等成熟框架,它们基于 NIO/epoll。原创 2025-08-04 22:07:43 · 673 阅读 · 0 评论 -
八股文误区,小于corePoolSize时候创建的是核心线程吗?该核心线程不会被回收吗?ThreadPoolExecutor.class源码分析
动态身份机制这是线程池最精妙的设计之一用简单条件实现弹性线程管理资源优化高峰时:允许临时线程(包括原核心线程)回收常态时:维持核心线程常驻公平性不依赖"先来后到"的固定身份根据当前负载动态调整所有线程行为最终一致性长期空闲后,线程池总会收敛到 corePoolSize最终保留的线程获得"核心"身份高峰时弹性扩展(包括利用原核心线程)空闲时高效收缩(不区分原始身份)最终维持核心服务能力。原创 2025-08-04 17:28:30 · 822 阅读 · 0 评论 -
Java线程池实现与管理详解--源码向
非核心线程创建条件核心线程都在忙碌任务队列已满当前线程数小于最大线程数任务分配机制新创建的非核心线程直接执行触发它创建的任务后续任务从队列中获取(使用线程回收机制非核心线程使用获取任务超时返回null后,线程退出循环执行清理线程资源队列操作区别入队:始终使用offer()(非阻塞,立即返回结果)出队take()(永久阻塞)(超时等待)资源优化非核心线程只在高峰期创建空闲时自动回收,避免资源浪费通过keepAliveTime精细控制回收时机。原创 2025-08-04 15:46:13 · 773 阅读 · 0 评论 -
sun.misc.Unsafe 类详解
public final native boolean compareAndSwapObject(Object var1, long var2, Object var4, Object var5) 是 sun.misc.Unsafe 类中最重要的原子操作方法之一,用于实现无锁并发编程。是 Java 提供的一个底层操作类,允许直接操作内存、绕过安全机制执行敏感操作。当且仅当字段当前值等于预期旧值 var4 时,才将字段值更新为新值 var5。var1: 包含目标字段的对象(如果是静态字段,可以传入类对象)原创 2025-08-04 10:05:27 · 898 阅读 · 0 评论 -
CompletableFuture,CyclicBarrier,CountDownLatch多线程同步编排原理。
使用控制线程阻塞通过的 CAS 操作原子更新状态当计数器归零时触发的级联唤醒利用 CLH 队列和 PROPAGATE 状态保证唤醒完整性这种设计在保证线程安全的前提下,最大程度减少了同步开销,特别是当等待线程数量较大时,级联唤醒机制相比传统唤醒方式有显著性能优势。原创 2025-08-01 16:40:47 · 419 阅读 · 0 评论 -
监视器(Monitor)内部,是如何做线程同步的?
监视器(Monitor)是Java中实现线程同步的核心机制,每个Java对象都内置了一个监视器。原创 2025-07-31 09:30:11 · 695 阅读 · 0 评论 -
可重入锁底层AQS,CLH状态
state 变量。原创 2025-07-31 09:12:28 · 353 阅读 · 0 评论