即一个线程修改了某个变量的值, 这新值对其他线程来说是立即可见的。
不加 volatile 时, 子线程无法感知主线程修改了 ready 的值, 从而不会退出循环,
而加了 volatile 后, 子线程可以感知主线程修改了 ready 的值, 迅速退出循环。
volatile 最适用的场景: 一个线程写, 多个线程读。
即一个线程修改了某个变量的值, 这新值对其他线程来说是立即可见的。
不加 volatile 时, 子线程无法感知主线程修改了 ready 的值, 从而不会退出循环,
而加了 volatile 后, 子线程可以感知主线程修改了 ready 的值, 迅速退出循环。
volatile 最适用的场景: 一个线程写, 多个线程读。