类加载过程的线程安全性保证(让实现线程安全的单例,又不让使用synchronized!)

https://mp.weixin.qq.com/s?__biz=MzI3NzE0NjcwMg==&mid=2650127610&idx=2&sn=cf043f3b38d1a9f99db147c4af2ee5d6&chksm=f36ba1dbc41c28cd79ec02d27da1805c9f7234c06dd195dfd957212b3c0f291225e778880538&scene=126&sessionid=1589247405&key=b152a177cb32a70e8469b2aaa790a338fc772f752fcc769894c4e85c818043c5486d64bdebe2f7db00570fed58e15413ccbc59e8b7bbda85c142fc9d05764bd9f49f22fd5b42633d41a77f3cb2bc7823&ascene=1&uin=MTI3NDQ2OTMxMw%3D%3D&devicetype=Windows+10+x64&version=62090070&lang=zh_CN&exportkey=A6MtRuoQxjxlKeeXPIsfnr8%3D&pass_ticket=x%2BEl%2By4e9M6qmg1SJOCRDdhQPXlqbdrNhYEEvFuczalnq%2FWaOdYdI33chG2UfDrv

 

类加载过程的线程安全性保证

以上的静态内部类、饿汉等模式均是通过定义静态的成员变量,以保证单例对象可以在类初始化的过程中被实例化。

 

这其实是利用了ClassLoader的线程安全机制。ClassLoader的loadClass方法在加载类的时候使用了synchronized关键字。

所以, 除非被重写,这个方法默认在整个装载过程中都是线程安全的。所以在类加载过程中对象的创建也是线程安全的。

你可能感兴趣的:(Java学习笔记)