Java多线程编程知识点系统梳理(2)

一、原子性

对于涉及共享变量访问的操作,若该操作从其执行线程以外的的任何线程来看是不可分割的,则认为是原子操作,说明这个操作具有原子性。
(1)针对共享变量而言,局部变量没有原子性问题
(2)是另外的线程看当前执行的线程,外部线程认为这个操作是否是原子操作

volatile int value;   // volatile关键字只能保证写操作的原子性,不保证其他操作的原子性

二、可见性

一个线程对某个共享变量进行更新后,后续访问该变量的线程可能无法立刻读取该变量的更新结果,甚至永远也无法读取最新结果。

三、有序性

一个处理器执行的顺序可能在另一个处理器上执行的顺序不一样,可能是编译器优化导致指令重排

多线程编程的目标和挑战.jpg

未完待续...

你可能感兴趣的:(Java多线程编程知识点系统梳理(2))