このコードでは、メソッドを同期するだけで十分ですか? どうもありがとう。
class{
private static VariableManager = new VariableManager();
...
static class VariableManager{
private Map<String, Integer> diffCases = new HashMap<String,Integer>();
private int count=0;
public synchronized VariableManager get(){
return this.
}
public synchronized void add(String case, Integer i){
diffCases.put(case, i);
}
public synchronized void increment(){
c++;
}
}
}
public static synchronized void process(){
...
variableManager.add(case, num);
variableManager.count();
}
プログラムが期待どおりに動作せず、2 つの静的変数が何らかの形で保護されていないと思われます。1つのスレッドを使用すると、うまく機能します。
手がかりはありますか?どうもありがとう。
2 つのスレッドは、同じイベント配列「eventsArray」を処理しています。「プロセス」メソッドでは、2 つの変数が同期メソッドで変更されます。
もう少し提供するには:
Thread e1 = new Thread(new EventThread(eventsArray, "e1"));
e1.start();
Thread e2 = new Thread(new EventThread(eventsArray, "e2"));
e2.start();
e1.join();
e2.join();