java static塊的執行次數
阿新 • • 發佈:2019-01-30
比較有意思的一段程式碼,可以先執行看效果再將註釋取消後看執行效果,上程式碼
/** * * 每個物件例項化的時候,都要路過static方法 * 但是編譯器會保證static快的執行是原子的,即便是多執行緒過來也要一個個執行 * 只不過,只有第一個例項動作的時候static快內的程式碼被執行 * 其他例項只是“路過” * 即,每個例項都要走到static塊,但是static塊只會執行一次, * 是通過呼叫該類的 client方法導致的,該方法只在類被載入的時候JVM呼叫 * @author liuinsect * */ public class StaticBlockTest implements Runnable{ static{ if(true){ System.out.println("test"); // while(true){ // // } } } @Override public void run() { System.out.println("run"); } /** * @author liuinsect * @date 2013-2-7 * @param args */ public static void main(String[] args) { StaticBlockTest s = new StaticBlockTest(); StaticBlockTest s1 = new StaticBlockTest(); // StaticBlockTest s2 = new StaticBlockTest(); // StaticBlockTest s3 = new StaticBlockTest(); // StaticBlockTest s4 = new StaticBlockTest(); // StaticBlockTest s5 = new StaticBlockTest(); Thread t1 = new Thread(s); Thread t2 = new Thread(s1); t1.start(); t2.start(); } }