package Ġio . null ables . api . playground . patterns . singleton 2 Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠIn no ĠF ang Ġon Ġ 2 0 1 7 / 8 / 1 2 . Ċ Ġ*/ Ċ class ĠThread Safe Double Check Singleton Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġimplement Ġ 1 ĊĠĠĠĠĠĠĠ Ġval Ġinstance 1 Ġby Ġlazy ( Lazy Thread Safety Mode . SYN CH RON IZED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠThread Safe Double Check Singleton () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġimplement Ġ 2 ĊĠĠĠĠĠĠĠ Ġ@ Volatile Ġprivate Ġvar Ġinstance 2 : ĠThread Safe Double Check Singleton ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġfun Ġget (): ĠThread Safe Double Check Singleton Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( null Ġ== Ġinstance 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsynchronized ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( null Ġ== Ġinstance 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinstance 2 Ġ= ĠThread Safe Double Check Singleton () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġinstance 2 !! ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ