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

解決済みの質問

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-10 13:59:23

QNo.7296902

すぐに回答ほしいです

質問者が選んだベストアンサー

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

投稿日時 - 2012-02-10 16:43:00

お礼

回答ありがとうございました!

投稿日時 - 2012-02-11 19:14:50

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

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

回答(2)

ANo.1

wait(),notify(),throw
しか使っちゃダメなの?

投稿日時 - 2012-02-10 15:33:53

補足

元々のプログラム自体を変更しなければ他の方法でも構いません。

投稿日時 - 2012-02-10 15:59:46

あなたにオススメの質問