みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

Javaのプログラムについて教えてください。

class SampleA implements Runnable {
int tmp1 = 0;
int tmp2 = 0;
public synchronized void run(){
try{
if(tmp1 == 1){
System.out.print("は");
System.out.print("め");
else if (tmp1 == 2){
System.out.print("じ");
System.out.print("て");
         }
if(tmp2 == 0)
tmp2 = tmp2 + 1;
System.out.print("ま");
}
System.out.print("。");
}catch(InterrupedException e){
System.out.print("し");
}
}
}

//Sample2.java

class Sample2{
public static void main(String[] args){
Sample1 sp = new Sample1();
Thread th1 = new Thread(sp);
Thread th2 = new Thread(sp);
th1.start();
th2.start();
}
}
wait(),notify(),throwを使って例外を生じさせるところまではわかったのですが
このプログラムを「はじめまして。」と順番に出力するにはどうすればいいですか?

投稿日時 - 2012-02-09 15:13:57

QNo.7295142

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

単純に System.out.print() の行を並び替えるのが簡単です。
「は」を出力しているブロックに並び替えて突っ込んでしまいましょう。

System.out.print("は");
System.out.print("じ");
System.out.print("め");
System.out.print("ま");
System.out.print("し");
System.out.print("て");
System.out.print("。");

どうしても wait()、notify()、throw を使いたければ、
出力に影響しない適当な所で使えばいいと思います。

消してはいけない行がある、
コードの追加は認められるが削除は認められない、
それぞれのスレッドに役割が決められている、
そういった類のルールがあれば話は別です。

参考URL:http://ja.wikipedia.org/wiki/%E8%87%AA%E7%94%B1

投稿日時 - 2012-02-09 16:00:54

補足

できればそうしたいのですが、このプログラムに追記することしか認められていない場合でお願いします。また、必ずwait(),notify(),throwを必ず使うことでお願いします。

投稿日時 - 2012-02-09 17:43:20