安全なこのクラスのスレッドを作成し、私は、以前の試験の質問から以下の非スレッドセーフコードがあります。私は受験のために勉強しています
class Q3 {
private boolean f[] = new boolean[20];
public Q3() {
for (int j = 0; j < 20; j++) {
f[j] = true;
}
}
public void negate(int a, int b) {
for(int j = a; j < b; j++) {
f[j] = !f[j];
}
}
public void swap(int a, int b) {
boolean temp = f[a];
f[a] = f[b];
f[b] = temp;
}
}
が、私はそれには、以下の調整を行うことにより、スレッドセーフで作られました:
class Q3 {
private boolean f[] = new boolean[20];
public Q3() {
for (int j = 0; j < 20; j++) {
f[j] = true;
}
}
synchronized void negate(int a, int b) {
for (int j = a; j < b; j++) {
f[j] = !f[j];
}
}
synchronized void swap(int a, int b) {
boolean temp = f[a];
f[a] = f[b];
f[b] = temp;
}
}
しかし、元のコードがスレッドセーフではない理由を誰かに説明できますか?コードがスレッドセーフであることを保証する方法を知っていますが、なぜコードが/スレッドセーフであるとはまだ分かりませんか?
'Q3'クラスの使用方法を教えてもらえますか? –
これは実際に何の文脈でも使われていないのですが、問題はコードのスレッドを安全にするように頼んでいます。なぜなら、なぜスレッドセーフではないのだろうかということだけです。スレッドセーフであるかどうかを区別する方法を知りたいのですが –
解決策を投稿していたときに最新の質問が削除されました。 'android:minSdkVersion =" 10 "'は ' 'になるはずです。あなたのビルドは失敗する必要があります –