可見性:當一個變量被聲明為volatile,多個線程之間會立即看到該變量的最新值。如果一個線程修改了volatile變量的值,其他線程會立即看到這個改變。
禁止指令重排序:volatile關鍵字可以禁止指令重排序,這意味著volatile變量的讀寫操作都是按照代碼順序執行的,不會被重排序優化。
不保證原子性:volatile關鍵字只能保證可見性和禁止指令重排序,但不能保證原子性。如果多個線程同時修改一個volatile變量,可能會出現線程安全問題。
適用于輕量級的線程同步:volatile關鍵字適用于一些輕量級的線程同步場景,比如標志位等。但對于復雜的線程同步場景,還是需要使用synchronized或者Lock等更強大的同步機制。