Здравствуйте, Vadim_A, Вы писали:
V_A>Давно пишу на java, но треды и синхронизацию использовал очень редко, отсюда появилась одна проблема. Наткнулся на вопрос из Java2 BrainBench — Имеется следующий код и варианты ответов
V_A>----------------------------------------------------------------------------
V_A>public class ThreadUnsafe {
V_A>private static int commonCounter=0;
V_A>public int getCount() {return commonCounter;}
V_A>public void addCount(int val) { commonCounter+=val;}
V_A>public void subtractCount(int val)
V_A>{ commonCounter-=val; }
V_A>}
Если поле методы обязательно надо оставить insrance a полe commonCounter static'ом
то синхронизироваться надо так
public class ThreadUnsafe {
private static int commonCounter=0;
public int getCount() {
synchronized (ThreadUnsafe.class) {
return commonCounter;
}
}
public void addCount(int val) {
synchronized (ThreadUnsafe.class) {
commonCounter+=val;
}
}
public void subtractCount(int val) {
synchronized (ThreadUnsafe.class) {
commonCounter-=val;
}
}
}