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