1. 程式人生 > >java static塊的執行次數

java static塊的執行次數

比較有意思的一段程式碼,可以先執行看效果再將註釋取消後看執行效果,上程式碼

/**
 * 
 * 每個物件例項化的時候,都要路過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();
		
	}



}