Я просто учусь на экзамен, и у меня есть следующие ноны поточно-код из предыдущего вопроса экзамена:сделать этот класс потокобезопасные
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'? –
Это не используется в любом контексте, вопрос просто просит сделать поток кода безопасным, что я и сделал, мне просто интересно, почему он не был потокобезопасным, в первую очередь, который не был частью вопрос, но я хотел бы знать, как отличить код, который является или не является потокобезопасным. –
Вы, jsut, удалили свой последний вопрос, когда я отправлял решение @ JohnP.Lally. 'android: minSdkVersion =" 10 "' должно быть ' '. Ваша сборка должна быть неудачной. –