
/**
 * プログラム実行用メインクラス
 */
class MySync1 {
    public static void main(String[] args) {
        MySyncThread1 mst1 = new MySyncThread1();
        MySyncThread1 mst2 = new MySyncThread1();
        mst1.start();
        mst2.start();
        System.out.println("*** メイン終了 ***");
    }
}

/**
 * Threadクラスのサブクラスを定義
 */
class MySyncThread1 extends Thread {
    /**
     * run メソッドをオーバーライド
     */
    public void run() {
        String threadName = this.getName();     //<--- スレッド名をgetNameメソッド
                                                //     により取得。
        System.out.println("*** "+threadName+" スレッド実行開始 ***");
        method1(threadName);
        System.out.println("*** "+threadName+" スレッド実行終了 ***");
    }

    static void method1(String name) {
        System.out.println(name+":メソッド開始");
        try {
            Thread.sleep(5000);    //<--- ５秒間、実行を止める。
        } catch( InterruptedException e ) {
            e.printStackTrace();
        }
        System.out.println(name+":メソッド終了");
    }
}
