多线程基本概念

来源:互联网 发布:软件配置管理 培训 编辑:程序博客网 时间:2024/06/06 04:28

竞争条件:多个任务并发访问和操作同一数据且执行结果与访问的特定顺序有关,称为竞争条件。(多个任务竞争响应某个条件,因访问顺序不同产生冲突或不一致的情况)。比如“检查再运行”“惰性初始化”。
原子操作:不能被打断的一系列操作。
复合操作:可以被打断的一系列操作。
不变约束(不变性约束):不变式表达了对状态的约束,这些状态应该符合这个约束值的组合。不变式可以代表某些业务规则。比如《java并发编程实战》中的例子:

UnsafeCachingFactorizer的一个不变约束是:缓存在lastFactors的各个因子的乘积应该等于缓存在lastNumber的数值。如果不符合该约束关系则不是线程安全的。

先验条件:针对方法,规定了在调用方法之前必须为真的条件。
后验条件:针对方法,规定了在调用方法之后必须为真的条件。
可见性:确保线程对变量的写入对其他线程是可见的,即刷新到主内存,其他线程要想见到还需要到主内存读取。