访问类变量

当访问类的静态变量时,类的状态可能出现以下4种:

1.该类尚未执行初始化:当前线程开始对其执行初始化。

2.该类正在被当前线程执行初始化:这是对初始化的递归请求。

3.该类正在被其他线程执行初始化:当前线程暂停,等待其他线程初始化完成。

4.这个类已经被初始化:直接得到该静态field的值。

初始化主要完成以下两个步骤:

(1)为该类所有field分配内存。(初始化为null)

(2)调用静态初始化块的代码执行初始化。

不是所有放在静态初始化块中的代码就一定是类初始化操作,静态初始化中启动的新线程的run代码只是新线程的线程执行体,并不是类初始化操作,类似地,不是所有放在非静态初始化块中的代码就一定是对象初始化操作,非静态代码块中启动的新线程的run方法只是新线程的线程执行体,并不是对象初始化操作。

posted @ 2018-03-23 01:11  虚竹一梦  阅读(117)  评论(0)    收藏  举报