并发编程三大特性——原子性、可见性、有序性

131 阅读1分钟

多线程编程为什么十分困难呢?因为我们失去了原子性、顺序性、可见性

要编写出正确的多线程程序,则必须保证上述属性。

原子性

即一个操作或者多个操作,要么全部执行并且执行的过程不会被任何因素打断,要么就都不执行。 单线程程序状态机模型中 “程序一直执行” 的基本假设在多线程环境下不再成立。

显然,我们多线程编程时,这个原子属性被破坏了,一个线程在执行时,很可能会被操作系统调度成另外一个线程执行。

顺序性

程序执行的顺序按照代码的先后顺序执行。

可见性

可见性指当多个线程访问同一个变量的时候,一个线程修改了这个变量的值,其他线程能立即得到修改的值