- :
public class Container
private Date date;
private int amount;
private final Object lock = new Object();
public void update(int amount){
int actualAmount;
Date oldDate;
for(oldDate = checkDate(); oldDate != null; oldDate = checkDate()){
synchronized(lock){
if(date == oldDate){
date = new Date();
this.amount = actualAmount;
break;
}
}
}
}
private Date checkDate(void){
synchronized(lock){
}
}
}
.date, . , , - BULK-. , .
lock checkDate(), .date . , , , ( ) .
, , update() , , BULK, - : , .