私はクライアントに質問を送信し、クライアントからの回答を受け取るサーバーを構築していますが、クライアントに質問を送信するときに、1時間再送信できないようにしたいです。つまり、クライアントに質問を送信した後、その質問が他のクライアントに送信されることのないように、1 時間待ちたいと思います。
static Hashtable<Integer, List<Integer>> unavialbeQuestions =
new Hashtable<Integer, List<Integer>>();
キーは clientID で、値は 1 時間以内にそのクライアントに送信されない質問の ID のリストです。この関数は、質問を無効にするために使用しました
public void setUnavialbeQuestion(final String cellName, final int questionID) {
List<Integer> cells = getCellsIntersectedWithCell(cellName);
int cellID = getCellID(cellName);
cells.add(cellID);
for (int i = 0; i < cells.size(); i++) {
if (unavialbeQuestions.containsKey(cellID)) {
unavialbeQuestions.get(cells.get(i)).add(questionID);
} else {
List<Integer> lll = new LinkedList<Integer>();
lll.add(questionID);
unavialbeQuestions.put(cellID, lll);
}
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
// TODO Auto-generated method stub
f(cellName, questionID);
}
}, 1000 * 120);
}
}
f()
1 時間 (私のデモではわずか 2 分) 後に起動される関数を参照してください。ここに問題がありf()
ます。関数の実行時に null ポインター例外が発生しました。
protected void f(String cellName, int questionDI) {
// TODO Auto-generated method stub
List<Integer> cells = getCellsIntersectedWithCell(cellName);
int cellID = getCellID(cellName);
cells.add(cellID);
for(int i=0;i<cells.size();i++){
int index = unavialbeQuestions.get(cells.get(i)).indexOf(questionDI);
unavialbeQuestions.get(cells.get(i)).remove(index);
}
}
パラメータの例外index
、何が間違っていますか?