
JUC
java.util.concurrent
醉花妍
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
线程:对象的组合
本文参考《java并发编程实战》,java并发必读书籍 目的:现有的线程安全组合为更大规模的组件或程序 一、设计线程安全的类 三个基本要素: 找出构成对象状态的所有变量 找出约束状态变量的不变性条件 建立对象状态的并发访问管理策略 1.收集同步需求 不可变条件:判断状态是有效还是无效的 先验条件:依赖状态的操作 后验条件:判断状态迁移是否是有效的 2.状态的所有权 所有权意...原创 2018-10-01 22:08:59 · 196 阅读 · 0 评论 -
并发:线程的优势及风险
本文参考《java并发编程实战》,java并发必读书籍 一、线程的优势 1.发挥多处理器的强大能力 一个线程对应一个处理器 2.建模的简单性 通过使用线程,可以将复杂并且异步的工作流进一步分解为一组简单并且同步的工作流; 每个工作流在一个单独的线程中运行 并在特定的同步位置进行交互 3.异步事件的简化处理 在服务器应用程序在接受多个远程客户端的套接字连接请求时:为每个...原创 2018-09-28 10:50:15 · 262 阅读 · 0 评论 -
并发:线程安全性
本文参考《java并发编程实战》,java并发必读书籍 关键词 线程与锁 共享的(Shared)状态:多个线程同时访问 可变的(Mutable)状态:变量的值在其生命周期内可以发生变化 同步机制:Synchronized, volatile类型变量, 显示锁(Explicit Lock),原子变量 解决可变的状态变量并发错误的3个方案1.不共享,2.改为不可变,3.使用同步 线程安全...原创 2018-09-28 12:20:23 · 146 阅读 · 0 评论 -
并发:对象的共享和发布
本文参考《java并发编程实战》,java并发必读书籍 要编写正确的并发程序,关键问题在于:访问共享的可变状态需要正确的管理。 一、可见性(变量的更新操作通知到其他线程) 1.多个线程读写时对内存的可见问题。是因为java内存模型导致的。在之后的博文中会介绍内存模型 重排序是内存模型的一种表现 重排序:在没有同步的情况下,编译器、处理器以及运行时都可能对操作的执行顺序进行调整 2...原创 2018-09-29 13:26:21 · 159 阅读 · 0 评论 -
java内存模型与线程(1)
一、处理器、高速缓存、主内存之前的交互图 二、Java内存模型 俩张图之间的关系很清晰 一个处理器对应一个线程 一个高速缓存对应一个工作内存 问题的关键点就在于:java线程之间与工作内存打交道,而不是主内存,工作内存之间没有直接的关联,都是要与主内存交互,并发关键点就在此。 三、内存间8种交互操作 1. 8种交互操作的含义 lock:作用于主内存的变量,...原创 2018-10-09 10:29:53 · 164 阅读 · 0 评论 -
java内存模型与线程(2)
一、原子性、可见性与有序性 1.原子性 原子性操作包括read、load、asign、use、store和write 更大范围的原子性保证:lock和unlock(俩者未开放),monitorenter和monitorexit(隐式的使用synchronized) 2.可见性 变量修改后将新值同步回主内存 volatile、synchronize、final都能保证 3....原创 2018-10-09 15:15:27 · 161 阅读 · 0 评论