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リストをロックして、インスタンスのいずれかがリストにデータを入力している間、他のインスタンスがリストを使用しないようにします。
ヘルプpls..