public class Rule{
private Integer ruleId;
private String name;
private Date startdate;
private Date endDate;
// getters & setters
}
public class ClassA{
public static List<Rule> ruleList = new ArrayList<Rule>();
public void populateRule(){
//Retrieve all rules; Here the rules are being added or deleted by the administration.
//So it is required to retrieve the rules every time the Job runs.
ruleList.clear();
ruleList.addAll(RuleService.retrieveRules());
}
}
public class UserClassA1{
ClassA oClassA=Factory.getInstance(ClassA.class);
List<Rule> rules=oClassA.populateRule();
for(Rule oRule:rules){
// do some stuff.
}
}
public class UserClassA2{
ClassA oClassA=Factory.getInstance(ClassA.class);
List<Rule> rules=oClassA.populateRule();
for(Rule oRule:rules){
// do some stuff.
}
}
在这里,UserClassA1 和 UserClassA2 正在执行不同的活动,但都使用相同的静态列表,并且当它们开始时,它们会重置列表并填充新列表。
我的问题是,当 UserClassA1 在填充列表后开始工作时,UserClassA2 开始执行并清除列表,然后去填充列表。在清除列表直到填充列表之后的这段时间间隔内,UserClassA1 无法正常运行,因为列表是清除。
我想锁定 ruleList 列表,这样当任何实例填充列表时,其他实例都不会使用该列表。
请帮助..