2つのスレッドを持つことによってJavaでマルチスレッドを使用しようとしています。スレッドの1つは、交差点を通って一方向に進む車を表し、もう一方は交差点を通過する別の車を表します。私の問題は、car2が「car2はそれを6回だけ印刷すべきである」よりも多くの時間、「交差するのを待っている」ということです。私は同期を使用しようとしましたが、それは動作しません。これは非常に簡単なプログラムで、マルチスレッドを理解するのに役立つようにしようとしています。同じ量をプリントアウトする必要があり、それは "車2が交差する待っている" と言うjava multithreading:交通交差システム
以下になっpublic class Drive {
public static Thread car1;
public static Thread car2;
public static void main(String[]args){
Cars cars = new Cars();
car1 = new Thread(cars, "car 1");
car2 = new Thread(cars, "car 2");
car1.start();
car2.start();
}
}
public class Cars implements Runnable{
int distance = 0;
public void increaseDistance(){
distance ++;
}
public void race(){
while(distance <= 5){
if(Thread.currentThread().getName().equals("car 1")){
System.out.println("Distance covered by " + Thread.currentThread().getName() + " is " + distance + " meters");
increaseDistance();
}
if(Thread.currentThread().getName().equals("car 2")){
System.out.println(Thread.currentThread().getName() + " is waiting to cross");
}
}
}
public void run(){
race();
}
}
出力イム...
car 2 is waiting to cross
car 2 is waiting to cross
car 2 is waiting to cross
car 2 is waiting to cross
car 2 is waiting to cross
Distance covered by car 1 is 0 meters
car 2 is waiting to cross
Distance covered by car 1 is 1 meters
Distance covered by car 1 is 2 meters
Distance covered by car 1 is 3 meters
Distance covered by car 1 is 4 meters
Distance covered by car 1 is 5 meters
car 2 is waiting to cross
「車1でカバーされる距離はxメートルですが、毎回ランダムです。
*同じ回数印刷する必要があります。なぜですか?プログラムを複数回実行して、結果を比較してみてください。 –
car2は、car1が交差するまで待っているだけなので、 – Phill
と言ってください。はい。それは毎回ランダムです。マルチスレッド開発の世界へようこそ。 –