出力電流の時間を達成するためにマルチスレッド化、およびゲームを推測

トピック1:同期出力時刻表示を実現するためのJavaマルチスレッド機構を使用してアプリケーションを書きます。

トピック2:ゲーム(ランダムな数字の0〜100の範囲の整数)を推測達成するためのJavaマルチスレッド機構を使用してアプリケーションを書きます。

トピック1:

パッケージのテストを。

輸入java.text.SimpleDateFormatの。
輸入java.util.Date;
輸入java.util.Timer;
輸入java.util.TimerTask。

パブリック クラスPrintCurrentTIme { 

    公共 静的 ボイドメイン(文字列[]引数){
         // TODO自動生成方法スタブ 
        タイマタイマ= 新しいタイマ()。
        timer.schedule(新しいTimerTaskを(){ 
            @Override 
            公共 のボイドの実行(){ 
                日付 = 新しい日付();
                SimpleDateFormat SDF= 新規のSimpleDateFormat( "YYYY-MM-DD HH:MM:SS" )。
                ストリング時間 = sdf.format(日付)。
                System.out.println(時間); 
            } 
        }、 0 1000 )。
    } 

}

結果:

トピック2:

パッケージのテストを。

輸入java.util.Randomの。
インポートjava.util.Scanner; 

パブリック クラスGuessNumber { 

    公共 静的 ボイドメイン(文字列[]引数){
         // TODO自動生成方法スタブ 
        NumberTest番号= 新しいNumberTest()。
        RandomNumberRunは走っ = 新しいRandomNumberRun(数); 
        GiveNumberRunギブ = 新しいGiveNumberRun(番号); 
        ran.start(); 
        give.start(); 
    } 
} 

クラス RandomNumberRunが延びていますスレッド{ 
    NumberTest数値1。

    RandomNumberRun(NumberTest番号1){ 
        この .nu​​mber1 = 数値1。
    } 

    @Override 
    公共 ボイドラン(){
         // TODO自動生成方法スタブ 
        ランダムのRAN = 新しいランダム();
        一方、){
             同期(番号1){
                 一方(number1.flag){
                     試み{ 
                        number1.wait()。
                    } キャッチ(InterruptedExceptionある電子){
                        // TODO自動生成されたcatchブロック
                        e.printStackTrace(); 
                    } 
                } 
                int型 NUM = ran.nextInt(101 )。
                number1.setNum1(NUM)。
                number1.notifyAll(); 
                number1.flag = ; 
            } 
        } 
    } 
} 
クラス GiveNumberRunは延びスレッド{ 
    NumberTest数値2を、

    GiveNumberRun(NumberTest数値2){ 
        この .nu​​mber2 = 数値2。
    } 
    @Override 
    公共 のボイドラン(){
         // TODO自動生成方法スタブ 
        スキャナが読み取り= 新しいスキャナ(System.in)を、
        一方、){ 
            するSystem.out.println( "请输入0〜100的数字!!!" )。
            同期(数値2){
                 しばらく(!number2.flag){
                     試み{ 
                        number2.wait(); 
                    } キャッチ(InterruptedExceptionある電子){
                         // TODO自動生成されたcatchブロック
                        e.printStackTrace(); 
                    }
                } 
                number2.setNum2(read.nextInt())。
                number2.flag = ; 
                number2.PrintRes(); 
                number2.notifyAll(); 
            } 
        } 

    } 
} 
クラスNumberTest {
     パブリック ブールフラグ= プライベート int型NUM1。
    プライベート int型からnum2; 

    公共 INT getNum1(){
         戻りNUM1。
    } 

    公共 ボイド setNum1(int型NUM1){
        この .nu​​m1 = num1を。
    } 

    公共 INT getNum2(){
         戻りNUM2。
    } 

    公共 ボイド setNum2(int型NUM2){
         この .nu​​m2 = NUM2。
    } 

    公共 ボイドPrintRes(){
         場合(NUM1> NUM2){ 
            するSystem.out.println( "小了" )。
        } そう であれば(NUM1 < NUM2){ 
            するSystem.out.println( "大了" )。
        } { 
            のSystem.out.println( "猜对了!!!"); 
        } 
    } 
}

結果:

おすすめ

転載: www.cnblogs.com/xiexiaofei/p/12054048.html