Javaの道 Javaに関する
 ニュースJava基本Servlet・JSPオープンソースFAQ掲示板
Javaの道 >  掲示板 >  掲示板(スレッドについて)
閲覧数:308
掲示板(スレッドについて)
名前
匿名
題名 スレッドについて
質問内容

質問を評価する
(0ポイント)
下記のプログラムで実行するたびに
"合計10回"で終われば、
"合計11回"で終わることもあり、一体なぜこのようなこ
とが起きるのでしょうか?
教えていただきたいです。

-----------------------------------------------
public class Main {
 public static int count = 0;
 public static void main(String[] args) {
  ExThread1 thread1 = new ExThread1();
  ExThread2 thread2 = new ExThread2();
        
  thread1.start();
  thread2.start();
 }
}

class ExThread1 extends Thread {
 public void run() {
  while(Main.count <= 20){
   Main.count++;
    try {
     sleep(1000);
    } catch (InterruptedException e) {                     
     e.printStackTrace();
    }
    }
  }
}

class ExThread2 extends Thread {
 int a = 1;
 public void run() {
  while (Main.count <= 10) {
   if (a == Main.count) {                   
    System.out.println("合計何回わりこまれた" + " 
" + Main.count);
   a++;
   }
  }
 }
}
質問日時 2013-12-24 20:49:22
名前
匿名
回答内容

回答を評価する
(0ポイント)
同時に動かしたスレッドはそれぞれどんなスピードで進む
か分からないから、としか言えないなあ。
回答日時 2013-12-24 21:54:07
名前
匿名
回答内容

回答を評価する
(0ポイント)
回答していただきありがとうございます。
class ExThread2内のwhileの条件文(Main.count<=10)
とその後のif(a==Main.cout)の間で
Main.countが11にカウントされる可能性があり得るという
ことでしょうか?
回答日時 2013-12-24 22:55:42
回答内容を入力し、「確認」ボタンをクリックしてください。
ログインしていません。ログインしなくても回答はできますが、ログインすると、質問・回答の管理、更新があった場合のメールでの通知を受けることができます。 ユーザIDをお持ちでない方は「ID登録」からユーザIDの登録を行ってください。
氏名 匿名
回答内容
 



このページのトップへ
 ニュースJava基本Servlet・JSPオープンソースFAQ掲示板
Javaの道_CopyrightJavaの道