static
{
...
}这种static初始化区块在多线程情况下可能会执行多次吗?

解决方案 »

  1.   

    我觉得应该只执行一次
    class Test{
        static{
            System.out.println("static静态块");
        }
        public static void main(String[] args){
            System.out.println("main主线程");
        }
    }运行结果为:
    static静态块
    main主线程

    你可以看到static比main方法主线程还先运行!
      

  2.   

    static语句块在类的.class文件被加载的时候被执行,
    因为.class只加载一次,所以static语句只执行一次
      

  3.   

    static 语句块里,只有在类被加载的时候运行一回。
      

  4.   

    看上去很酷哦 我测试在继承的时候改变静态变量 还是有些缺陷的class A {
     static int a=0;
     static int geta() {
      return a;
    }class B extends A {
     static { a = 1; }
    }然后我调用B.geta()的时候 返回0 
      

  5.   

    static   语句块里,只有在类被加载的时候运行一回。试试更好