北海道苫小牧市出身の初老PGが書くブログ

永遠のプログラマを夢見る、苫小牧市出身のおじさんのちらしの裏

悪意なバッチ処理

バッチ処理させるプログラムで、以下のようなコードを見つけました。

class EvilBatch{

    EvilBatch(){
	System.out.println("start batch");
	/* 以下、複雑な処理のつもり */
	try{
	    Thread.sleep(3000);
	}catch(InterruptedException e){
	    e.printStackTrace();
	}
	System.out.println("end batch");
    }

    static public void main(String[] args){
	new EvilBatch();
    }

}

コンストラクタでバッチ処理をするので、3秒間処理が戻って来ません。main()ではこのバッチを呼ぶためにインスタンスを生成しているが、参照する必要はないのでそのまま捨てています。正直、これを書いたやつは変態かと(´‐` ○)。

で、悔しかったのでこれを上回る変態のバッチを用意しました(ぇ。

class DevilBatch{
    static{
	System.out.println("start batch");
	/* 以下、複雑な処理のつもり */
	try{
	    Thread.sleep(3000);
	}catch(InterruptedException e){
	    e.printStackTrace();
	}
	System.out.println("end batch");
    }
}

これだとmain()が必要ありません。「java.lang.NoSuchMethodError: main」って言われるけど知ったこっちゃありません。どうせ変態になるなら、これくらいやってもらわないと(笑)。

ちなみに、この実装だと先の実装と違って誤って二回newされても処理は一回しか走らないのがすばらし・・・くないですね。こんな実装断固反対( ´ω`X( ´ω`X<ダメダーメ