why is `volatile` used in the double-check pattern?
the synchronized keyword already supports the happen-before rules , so why do we still need to use volatile on the filed .
the synchronized keyword already supports the happen-before rules , so why do we still need to use volatile on the filed .