事务的ACDI1、原子性(一个事务要么同时成功,要同时失败)Bob给了Smith 100元重点:原子性只记录了undo日志,可以回滚到之前的版本。2、一致性(对事务加了一把锁)核心:can(happen before)3、隔离性(以性能为理由,对一致性的破坏)1、序列化读写排他锁:(单位时间内只有一 ...
分类:
其他好文 时间:
2016-06-01 23:14:16
阅读次数:
334
1.http://www.iteye.com/topic/260515 编写Java多线程程序一直以来都是一件十分困难的事,多线程程序的bug很难测试,DCL(Double Check Lock)就是一个典型,因此对多线程安全的理论分析就显得十分重要,当然这决不是说对多线程程序的测试就是不必要的。传
分类:
移动开发 时间:
2016-02-23 11:09:09
阅读次数:
248
前面已经介绍硬件平台Cache Coherence问题和解决办法,下面来看看Java虚拟机平台的相关知识。硬件平台处理器,高速缓存,主存之间的交互关系如下:Java内存模型(JMM) Java虚拟机规范中试图定义一种Java内存模型(Java Memory Model, JMM)来屏蔽掉底...
分类:
移动开发 时间:
2015-07-05 22:24:38
阅读次数:
253
缓存(Cache) CPU的读/写(以及取指令)单元正常情况下甚至都不能直接访问内存——这是物理结构决定的;CPU都没有管脚直接连到内存。相反,CPU和一级缓存(L1 Cache)通讯,而一级缓存才能和内存通讯。大约二十年前,一级缓存可以直接和内存传输数据。如今,更多级别的缓存加入到设计中,一级.....
分类:
移动开发 时间:
2015-07-04 19:46:29
阅读次数:
356
深入Java内存模型——happen-before规则及其对DCL的分析...
分类:
移动开发 时间:
2015-05-17 12:20:50
阅读次数:
186
Java内存模型是围绕着并发过程中如何处理原子性、可见性、有序性这三个特征来建立的,下面是这三个特性的实现原理:
1.原子性(Atomicity)
由Java内存模型来直接保证的原子性变量操作包括read、load、use、assign、store和write六个,大致可以认为基础数据类型的访问和读写是具备原子性的。如果应用场景需要一个更大范围的原子性保证,Java内存模型还提供了loc...
分类:
编程语言 时间:
2014-12-17 00:23:19
阅读次数:
236
Try your best to provide an mechanism to implement what you want.1. All happen before compiling-time.1 QObject.connect(sender,SIGNAL(signal()), recive...
分类:
其他好文 时间:
2014-12-10 20:59:27
阅读次数:
350
内存屏障:使内存数据对CPU核可见的技术被称为内存屏障或内存栅栏。
happen-before 原则:两个操作之间具有happens-before 关系,就必须要求前一个操作的结果对后一个操作可见。
常见的happens-before规则:
程序顺序规则:一个线程中的每个操作,happens- before 于该线程中的任意后续操作。
监视器锁规则:对一个监视器锁的解锁,happe...
分类:
移动开发 时间:
2014-12-05 15:32:50
阅读次数:
524
Java内存模型和并发
1. 并发:
a) 并发一定是涉及到了多个执行流
b) 多个执行流之间一定有数据的共享(如果全是私有的数据就不会相互影响了(因为硬件上底层先保证了硬件资源的并发透明性,然后又没有共享的数据,相当于各个执行流在单独的封闭的上下文中独自的运行了))
c)
i. ...
分类:
移动开发 时间:
2014-08-23 19:06:11
阅读次数:
332