对于以下示例:
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;
}
例如,当两个线程同时调用 getCar(2) 时,就会出现问题。然后两个线程都到达 POINT A,并生成 Car#2 的两个实例。如何让第二个线程在 POINT A 处等待,直到第一个线程完成创建,然后在两个调用中返回相同的对象?(我在 Android 中这样做)
谢谢