先看一个例子:
虽然在变量numb上使用了volatile,但是得出的结果是不固定的,这说明,volatile是一个非线程安全的关键字。
volatile关键字的应用场景:
由于例子已经说明volatile在竞争性的写操作上是线程不安全的(因为每个线程都是从存储volatile的变量去取值,但是++操作在汇编中实际上有4步操作,那么多个线程就不会保证同步了。多线程还是只有用Lock或synchronized),那么只有当多线程只针对volatile变量做判断的场景下才有效。例如:
先看一个例子:
虽然在变量numb上使用了volatile,但是得出的结果是不固定的,这说明,volatile是一个非线程安全的关键字。
volatile关键字的应用场景:
由于例子已经说明volatile在竞争性的写操作上是线程不安全的(因为每个线程都是从存储volatile的变量去取值,但是++操作在汇编中实际上有4步操作,那么多个线程就不会保证同步了。多线程还是只有用Lock或synchronized),那么只有当多线程只针对volatile变量做判断的场景下才有效。例如: