私はJavaで、数台の車を互いに競争させるプログラムを作成しています。各車は別々のスレッドです。
車がレースを完了すると、それぞれがこのメソッドを呼び出します。さまざまなタイマー速度でメソッドをテストしましたが、正常に機能しているようです。しかし、私は、各スレッドが変数carsCompleteにアクセスしていることを認識しています。時には、まったく同時に(少なくとも、dateコマンドが私に与えているスコープでは)。
だから私の質問は:このメソッドはスレッドセーフですか?
public static String completeRace()
{
Date accessDate = new Date();
System.out.println("Cars Complete: " + carsComplete + " Accessed at " + accessDate.toString());
switch(++carsComplete)
{
case 1: return "1st";
case 2: return "2nd";
case 3: return "3rd";
default: return carsComplete + "th";
}
}