次の例では:
public Car getCar(int id){
Car result= findCarInCache(id);
if (result==null){
// POINT A
return createCarWithId(id);
} else {
return result;
}
}
public Car findCarInCache(int id){
// Do something for find a car with this id in the cache
}
public void addToCache(Car car){
// Add the car to the cache
}
public Car createCarWithId(int id){
Thread.sleep(10000);
Car result= new Car(id);
addToCache(Car);
return result;
}
たとえば、2 つのスレッドが同時に getCar(2) を呼び出すと、問題が発生します。その後、両方のスレッドが POINT A に到達し、Car#2 のインスタンスが 2 つ生成されます。最初のスレッドが作成を終了し、両方の呼び出しで同じオブジェクトを返すまで、2 番目のスレッドを POINT A で待機させるにはどうすればよいですか? (私はAndroidでこれをやっています)
ありがとう