随笔分类 - 并发编程
摘要:【volatile 原理】内存屏障、DCL 实现;
【happens-before】可见性和有序性的规则总结
阅读全文
摘要:控制多个线程的执行顺序(先后、交替);Monitor 小结
阅读全文
摘要:锁的粒度、活跃性(死锁、饥饿)、可重入锁(ReentranLock)与 synchronied 的对比
阅读全文
摘要:synchronized 重量级锁,消耗性能。优化策略:偏向锁、轻量级锁、锁自旋等
阅读全文
摘要:Monitor 是 synchronized 的底层原理,由 C++ 实现
阅读全文
摘要:变量的线程安全,包括成员变量、局部变量,基本类型或引用类型。
通过案例练习 API 的使用。
阅读全文
摘要:1、共享的问题 1.1、故事引入 老王(操作系统)有一个算盘(CPU) 张三和李四是同一个客栈的伙计,张三负责收钱、李四负责采购。 二人互不知道对方的资金情况。 张三(线程)要来借算盘,负责记客栈的收入 张三不可能无时不刻地使用算盘 会有不使用算盘的时候(阻塞),比如 休息(sleep) 吃饭或上厕
阅读全文
摘要:1、同步模式:保护性暂停 Guarded Suspension 场景:一个线程等待另一个线程的执行结果。 实现:线程关联同一个 GuardedObject 对象,用于在线程之间传递结果。 单任务版:无限期等待、超时等待。 多任务版:基于单任务版 + 集合管理。 JDK 的 join()、Future
阅读全文
摘要:1、wait/notify 背景知识:synchronized、Monitor 1.1、API 介绍 Object 类提供的方法。 必须成为对象 Monitor 的 Owner,才能调用这两个方法。 1.1.1、wait() 使 Monitor 的 Owner 进入 WaitSet wait(lon
阅读全文
摘要:1、Thread 注:Thread 类实现了 Runnable 接口。 1.1、创建线程(❗) 通常以匿名内部类的形式创建线程,且通常以 lambda 表达式简化。 建议为每个线程指定线程名。 有 3 种创建线程的方式。 1.1.1、Thread 创建 Thread 匿名内部类,实现 run() 方
阅读全文
摘要:前言 并发编程涉及知识点 进程与线程 并发与并行 同步与异步 Java 并发工具、并发问题及解决方案 基础知识 接触过 Java Web、JDBC 开发、Web 服务器(最好有分布式框架基础) 基于 JDK 8,了解函数式编程、lambda 表达式 JVM 日志,方便输出调试 相关日志配置:基于 l
阅读全文