蜗牛大师

吴庆龙的学习笔记

导航

2018年11月12日 #

并发中的volatile

摘要: [TOC] 1. 概述 由于线程有本地内存的存在, 一个线程修改的共享变量不会及时的刷新到主内存中, 使得另一个线程读取共享变量时读取到的仍旧是旧值, 就导致了内存可见性问题. 现在volatile就可以解决这个问题, 为什么能解决内存可见性问题呢? 本文就来揭开volatile的神秘面纱. 2. 阅读全文

posted @ 2018-11-12 19:39 蜗牛大师 阅读(772) 评论(0) 推荐(0) 编辑

JMM中的重排序及内存屏障

摘要: 在执行程序时,为了提高性能,编译器和处理器常常会对指令做重排序。为了实现某些功能有时会禁止某些重排序,由此引入了内存屏障。 一、重排序 重排序虽然可以提高程序性能,但是编译器和处理器不会改变存在数据依赖关系的两个操作的执行顺序。 即:编译器和处理器在重排序时,会遵守数据依赖性。 这里说的数据依赖性仅 阅读全文

posted @ 2018-11-12 17:24 蜗牛大师 阅读(2023) 评论(0) 推荐(0) 编辑

Java6及以上版本对synchronized的优化

摘要: 一、概述 在多线程并发编程中 synchronized 一直是元老级角色,很多人都会称呼它为重量级锁。但是,随着 Java SE 1.6 对 synchronized 进行了各种优化之后,有些情况下它就并不那么重了。 本文详细介绍 Java SE 1.6 中为了减少获得锁和释放锁带来的性能消耗而引入 阅读全文

posted @ 2018-11-12 11:45 蜗牛大师 阅读(91074) 评论(14) 推荐(21) 编辑