Я хочу, чтобы обе нити, чтобы разделить переменную, но иногда во время выполнения он печатает 2 раза, а не 1 и 2.Темы разделяющей переменного экземпляра
public class man implements Runnable{
int value = 0;
public static void main(String[] args){
Runnable job = new man();
Thread work1 = new Thread(job);
work1.setName("Thread1");
Thread work2 = new Thread(job);
work2.setName("Thread2");
work1.start();
work2.start();
}
public void run(){
synchronized(this){
value = value + 1;
}
System.out.println("VALUE = " + value +", Running " + Thread.currentThread().getName());
}
}
Выход иногда:
VALUE = 2, Running Thread2
VALUE = 2, Running Thread1
и другие времена это:
VALUE = 1, Running Thread2
VALUE = 2, Running Thread1
Почему это происходит? Я изучаю Java в книге HeadFirst, и этот вопрос возник.
О хорошо, спасибо за подсказку. –