阻塞队列被阻塞时,线程在干嘛?
线程在 BlockingQueue 阻塞时是“睡着”的,不占CPU,CPU 会被调度去执行其他线程
个人博客
关于软件、系统设计与持续学习。文章由 Notion 写作并在这里发布。
目前已发布 302 篇文章。
筛选结果
共 33 篇
线程在 BlockingQueue 阻塞时是“睡着”的,不占CPU,CPU 会被调度去执行其他线程
都可以在不同线程/协程之间传递数据、实现阻塞式等待但是细节方面又有很大的不同,可以类比但是不能套用
从API 概览、常见实现、使用技巧到典型应用场景说明阻塞队列
Java 中,并没有像 Rust 的“中毒锁(Poisoned Mutex)”这样显式的机制
1. 静态集合或全局缓存导致的泄漏 2. Listener/Callback 未及时注销 3. 内部类(Inner Class)或匿名类持有外部类引用 4. ThreadLocal 使用不当 5. 长生命周期对象持有短生命周期对象引用 6. JDBC Connection、IO 流、Socket 等资源未关闭 7. ClassLoader 泄漏 8. 自定义缓存/缓冲池未设置容量或过期策略 9. 集合迭代时操作不当导致对象残留 10. JNI(本地方法)导致的本地内存泄漏 11. 检测与定位内存泄漏的通用方法
Spring Boot 在启动时主要做了以下几大类事情: 1. 环境准备 2. 核心容器构建 3. Bean 初始化 4. Web 服务器启动 5. Runner 执行
主题索引