都对,理论是基于可见性的考虑 实际上了也基于有序性的考虑, 见: [https://blog.csdn.net/java_1996/article/details/87472644](https://link.segmentfault.com/?enc=UJI85DGMBQ5VtOt2fSr0bw%3D%3D.QRt%2Bk4jeAoPSLHwfW8R1zcBnhaAfbU6eU5zzKaCif4sPnQh7ipbZbnIS3qHfYITb%2BIYF2quY%2FulJVDB2myw0Qg%3D%3D) 你可以试试在double-check单例模式里去掉volatile跑一下代码就可以看到问题了