摘要:
64位处理器缓存行的长度是64字节,java 64位long类型数据是8字节,也就是说一个缓存行需要8个long类型数据填充如上图,假设volatile类型 head和tail在内存中地址连续,被两个CPU core1和core2都加载到各自的缓存行中,如果core1修改了head的值(缓存和内存中... 阅读全文
posted @ 2015-03-24 17:39
xuqiyu
阅读(353)
评论(0)
推荐(0)
摘要:
Volatile变量修饰符如果使用恰当的话,它比synchronized的使用和执行成本会更低,因为它不会引起线程上下文的切换和调度。处理器为了提高处理速度,不直接和内存进行通讯,而是先将系统内存的数据读到内部缓存(L1,L2或其他)后再进行操作,但操作完之后不知道何时会写到内存,如果对声明了Vol... 阅读全文
posted @ 2015-03-24 17:17
xuqiyu
阅读(171)
评论(0)
推荐(0)
摘要:
并发框架Disruptor使用了一个叫做 RingBuffer(环)的数组结构它只有指向下一个可用位置的序号,没有只向尾部的序号,是因为RingBuffer不删除Buffer中的数据,当重叠时直接用新数据覆盖。为什么使用数组而不是链表,1.数组在内存的存储位置是连续的,链表是不连续的。对数组的访问比... 阅读全文
posted @ 2015-03-24 16:36
xuqiyu
阅读(311)
评论(0)
推荐(0)
浙公网安备 33010602011771号