2020年3月4日

volatile 原理

摘要: 可见性 当一个变量定义为volatile之后,它将具备两种特性,第一是保证此变量对所有线程的可见性,这里的“可见性”是指当一条线程修改了这个变量的值,新值对于其他线程来说是可以立即得知的。 volatile变量在各个线程的工作内存中不存在一致性问题(在各个线程的工作内存中,volatile变量也可以 阅读全文

posted @ 2020-03-04 17:53 cag2050 阅读(162) 评论(0) 推荐(0) 编辑

Java 内存模型,在并发过程中如何处理原子性、可见性和有序性这3个特性?

摘要: 特性 | 概念 | 实现此特性的解决方案 | | 原子性(Atomicity)| 由Java内存模型来直接保证的原子性变量操作包括read、load、assign、use、store和write,我们大致可以认为基本数据类型的访问读写是具备原子性的(例外就是long和double的非原子性协定,读者 阅读全文

posted @ 2020-03-04 14:22 cag2050 阅读(243) 评论(0) 推荐(0) 编辑

ThreadLocal:一个变量要被某个线程独享

摘要: Java语言中,如果一个变量要被多线程访问,可以使用volatile关键字声明它为“易变的”; 如果一个变量要被某个线程独享,Java中就没有类似C++中__declspec(thread)这样的关键字,不过还是可以通过java.lang.ThreadLocal类来实现线程本地存储的功能。每一个线程 阅读全文

posted @ 2020-03-04 13:21 cag2050 阅读(557) 评论(0) 推荐(0) 编辑

slf4j 从多个日志实现中,绑定一个具体的日志,原理解析

摘要: 参考 | 网址 | Java日志框架:slf4j作用及其实现原理 | https://www.cnblogs.com/xrq730/p/8619156.html 阅读全文

posted @ 2020-03-04 11:32 cag2050 阅读(475) 评论(0) 推荐(0) 编辑

使用场景:final、volatile、ThreadLocal、synchronized、Atomic(自己整理)

摘要: 锁 | 原理 | 使用场景 | | final | 实现了Java内存模型的可见性 | 一个变量要被多个线程访问 volatile | 实现了Java内存模型的可见性、有序性 | 一个变量要被多个线程访问 ThreadLocal | 如果一个变量要被某个线程独享,Java中就没有类似C++中__de 阅读全文

posted @ 2020-03-04 11:03 cag2050 阅读(294) 评论(0) 推荐(0) 编辑

导航