随笔分类 -  JAVA并发

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