トピック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){ この .number1 = 数値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){ この .number2 = 数値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){ この .num1 = num1を。 } 公共 INT getNum2(){ 戻りNUM2。 } 公共 ボイド setNum2(int型NUM2){ この .num2 = NUM2。 } 公共 ボイドPrintRes(){ 場合(NUM1> NUM2){ するSystem.out.println( "小了" )。 } そう であれば(NUM1 < NUM2){ するSystem.out.println( "大了" )。 } 他{ のSystem.out.println( "猜对了!!!"); } } }
結果: