摘要: 多线程的三要素 原子性 所有的操作要么成功,要么失败,不能中间中止 可见性 对于共享变量,有一个线程修改了其值,其他线程也能看到,使用的也是最新的值 有序性 代码按照顺序执行(只要求最终一致性)(不影响单线程的最终一致性,但会影响多线程的一致性) { int i=0; boolean b=false 阅读全文
posted @ 2020-02-19 14:52 Draymond 阅读(615) 评论(0) 推荐(0) 编辑
摘要: 单线程下,编写在前面的代码优先于后面的代码执行unlock发生在lock后volatile修饰的变量,写操作优先于读操作(多线程条件,既有read又有write,先write保存到cache-> main memory ;read再从main memory中读取)传递规则:A优先于B,B优先于C,则 阅读全文
posted @ 2020-02-19 09:53 Draymond 阅读(107) 评论(0) 推荐(0) 编辑
摘要: 作用 1:内存可见性 强制对缓存的修改立刻写入主存 如果是写操作,会导致其他cpu的缓存失效 2:代码执行顺序 保证重排的顺序不会把后面的指令放到屏障的前面,也不会把前面的放到后面 3:不保证原子性使用场景 1:状态量标记 volatile boolean run=true; while(run){ 阅读全文
posted @ 2020-02-19 09:51 Draymond 阅读(191) 评论(0) 推荐(0) 编辑