类加载的几个阶段:
java源码-字节码文件(.class文件)-加载loading-链接linking(验证-准备-解析)-初始化initialization。
加载:将类的class文件读入到内存中,并为之创建一个Class对象,此过程由加载器完成;
链接:将类的二进制字节码合并到JRE中,其中:验证,即保证class字节流文件符合虚拟机的要求,并不会危害虚拟机的安全、准备:即分配内存,完成类的静态成员属性与方法的默认初始化、解析:把符号引用替换为直接引用。
初始化:此阶段才真正完成静态代码块的初始化内容,利用方法,完成静态内容的赋值内容。而且用同步锁,确保了初始化一个类的安全性,只有一个线程可以操作,其他线程处于阻塞等待。直到执行完成为止。