
Java多线程
文章平均质量分 66
Java多线程知识
结构化思维wz
敬他人,即是敬自己;靠自己,胜于靠他人。
展开
-
记录一次可见性问题引发的思考
可见性问题 欢迎大家在评论区说出自己的想法 案例描述: 写一个while循环,条件变量设置为ture,创建一个线程(线程0)调执行此方法。 用main线程修改条件变量,看是否while循环结束了。 如果结束了,证明main线程在工作内存中修改的条件变量被线程0读取到了。 如果没结束,证明main线程在工作内存中修改的条件变量没有被线程0读取到。 public class TestVolatile { public static void main(String[] args) {原创 2022-04-10 16:49:51 · 385 阅读 · 0 评论 -
8w字 | Java并发编程 全套功法
优快云统计字数:77153字,Java多线程从入门到精通,由浅入深。:heart::heart:[建议收藏!]:heart::heart: 文章结合代码与理论,形象的解释了JMM模型、各种锁......原创 2021-10-07 15:53:23 · 35217 阅读 · 49 评论 -
Java原子变量类模拟多用户多线程访问
文章目录原子变量类使用AtomicLong定义计数器 原子变量类 原子变量类基于CAS实现的,当对共享变量进行 read-modify-writer更新操作时,通过原子变量类可以保障操作的原子性与可见性,对变量的read-modify-writer更新操作是指当前操作不是一个简单的赋值,而是一个变量的新值依赖变量的旧值。 例如 i++ 的操作就是 读 -> +1 -> 赋值; 由于volatile无法保证原子性,只能保证可见性,原子变量类内部就是借助一个volatile变量,并且保障了该变量的.原创 2021-10-04 11:15:33 · 352 阅读 · 0 评论 -
Java多线程----CAS
文章目录CAS使用CAS实现线程安全的计数器CAS中的ABA问题 CAS CAS(Compare And Swap)协议/算法是由硬件实现的。 CAS可以将 read - modify -write 这类的操作转换为 原子操作。 i++ 包括三个原子操作: 从主内存读取i变量的值 对i的值加1 再把加一之后的值保存到主内存 CAS原理: 在把数据更新到主内存时,再次读取主内存变量的值,如果现在变量的值与期望的值(操作起始时读取的值)一致就更新。 理想状态: 并发问题可能的状态: CAS就是把数据更新原创 2021-10-03 21:41:48 · 355 阅读 · 0 评论 -
自己写一个Spring中的多线程 @Async 注解
手写@Async异步注解 思路:通过Aop拦截只要在我们方法上有使用到我们自己定义的异步注解,我们就单独的开启一个异步线程去执行目标方法。 1.自定义一个注解 /** * @author 王泽 */ @Target({ElementType.TYPE, ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface MyAsync { String value() default "";原创 2021-09-24 18:59:59 · 340 阅读 · 0 评论