/**
* 1、單例範例
*/
public class Instance {
/**
* 1、volatile修飾變量,保證變量在多線程中的可見性,即:變量instance在某一線程中被更改,其它線程能立即獲得修改後的值
* 2、tip:JVM運行時會有一個主內存,各線程也有各自的專屬內存,
* 3、對於靜態變量,如果不加volatile修飾,將由JVM自己決定何時從各線程的專屬內存中讀取變量值,導致髒數據出現
*/
public static volatile Instance instance = null;
/**
* synchronized修飾的方法,保證了同時只有一個線程可以調用
*/
public static synchronized Instance getInstance() {
if(instance == null) {
instance = new Instance();
}
return instance;
}
}
知識點:1、volatile 2、synchronized