synchronized(x) { }
を避けながら、複数のスレッドが同じ日付を更新する更新プログラムの問題を回避できるかどうかは疑問です。同期を直接使用せずにJavaで更新が失われないようにする
私は、多くのことになるだろうが追加され、単位:
val++;
ary[x] += y;
ary[z]++;
私はJavaのバイトコードにこれらをコンパイルする方法を知っていないと、スレッドはバイトのこれらのステートメントブロックの1つの途中で中断することができればコード。言い換えれば、これらのステートメントはスレッドセーフですか?
また、私はVectorクラスが同期されていることを知っていますが、その意味がわかりません。位置i
の値がvec.get(i)
とvec.set(...)
の間で変更されないという点で、次のコードはスレッドセーフであるでしょうか。
class myClass {
Vector<Integer> vec = new Vector<>(Integer);
public void someMethod() {
for (int i=0; i < vec.size(); i++)
vec.set(i, vec.get(i) + value);
}
}
ありがとうございます。
ありがとう、java.util.concurrent.atomicが存在しませんでした。 – nash
これは低レベル側のビットです。 java.util.concurrentは、より一般的には有用なレベルです。 –