访问类变量
当访问类的静态变量时,类的状态可能出现以下4种:
1.该类尚未执行初始化:当前线程开始对其执行初始化。
2.该类正在被当前线程执行初始化:这是对初始化的递归请求。
3.该类正在被其他线程执行初始化:当前线程暂停,等待其他线程初始化完成。
4.这个类已经被初始化:直接得到该静态field的值。
初始化主要完成以下两个步骤:
(1)为该类所有field分配内存。(初始化为null)
(2)调用静态初始化块的代码执行初始化。
不是所有放在静态初始化块中的代码就一定是类初始化操作,静态初始化中启动的新线程的run代码只是新线程的线程执行体,并不是类初始化操作,类似地,不是所有放在非静态初始化块中的代码就一定是对象初始化操作,非静态代码块中启动的新线程的run方法只是新线程的线程执行体,并不是对象初始化操作。
浙公网安备 33010602011771号