随笔分类 - JAVA并发
摘要:每个java线程都有一个Parker实例,Parker类是这样定义的: 可以看到Parker类实际上用Posix的mutex,condition来实现的。 在Parker类里的_counter字段,就是用来记录所谓的“许可”的。 当调用park时,先尝试直接能否直接拿到“许可”,即_counter>
阅读全文
摘要:JAVA对象内存结构 HotSpot虚拟机中,对象在内存中存储的布局可以分为三块区域:对象头(Header)、实例数据(Instance Data)和对齐填充(Padding)。 对象头 markWord 用于存储对象自身的运行时数据, 如哈希码(HashCode)、GC分代年龄、锁状态标志、线程持
阅读全文
摘要:Thread类中State枚举定义: sleep(long) 测试i类: 运行结果: join() 测试代码: 运行结果: wait() 测试代码: 运行结果:
阅读全文
摘要:java.util.concurrent.atomic包中对基本类型进行原子操作的类有:AtomicInteger、AtomicBoolean、AtomicLong。 下面通过一个测试程序来验证一下AtomicInteger真的实现了原子操作 按照我们的预期如果最终结果是0,那么就可以说明确实实现了
阅读全文
摘要:CAS概念 CAS:Compare And Swap,比较并交换。java.util.concurrent包完全是建立于CAS机制之上的。 CAS原理 Java CAS是通过调用Unsafe的native方法,再由C程序调用CPU底层命令实现的。 下面是对应于intel x86处理器的源代码的片段:
阅读全文

浙公网安备 33010602011771号