Я начал изучать многопоточность и синхронизацию в Java и решил заняться практикой.Я написал простой код, в котором у меня есть два синхронизированных метода, объект класса которых используется тремя потоками, но когда я запускаю этот код, синхронизация не работает, я теряю здесь точку?Любая помощь приветствуется.
Runner.java
public class Runner {
private int count;
public synchronized int getCount() {
return count;
}
public synchronized void setCount(int count) {
this.count = count;
}
}
ThreadOne.java
public class ThreadOne extends Thread{
Runner r;
int count;
public ThreadOne(Runner r , int count)
{
this.r=r;
this.count=count;
}
@Override
public void run()
{
r.setCount(count);
System.out.println("count is: "+r.getCount());
}
}
Точно так же у меня есть классы ThreadTwo.java и ThreadThree.java и, наконец, основной класс:
MainRunner.java
public class MainRunner {
public static void main(String[] args) {
// TODO Auto-generated method stub
Runner runner = new Runner();
ThreadOne one = new ThreadOne(runner, 1);
ThreadTwo two = new ThreadTwo(runner, 2);
ThreadThree three = new ThreadThree(runner, 3);
one.start();
two.start();
three.start();
}
}
И вывод, который я получаю,:
count is: 1
count is: 3
count is: 2
Не выглядит синхронизированным.Я знаю, что что-то здесь не хватает, Пожалуйста, дайте мне знать.Заранее спасибо