У меня есть POJO BusStop, у которого есть название автобусной остановки и сколько пассажиров.Несколько потоков, работающих на одном объекте
public class BusStop{
private String name;
private Integer passengers;
//setters getters constructor
public void removePassengers(Integer i){
synchronized(passengers){
this.passengers = this.passengers - i; // right now I allow them to go below zero for the sake of just testing threads;
}
}
public void increasePassengers(Integer i){
synchronized(passengers){
this.passengers = this.passengers + i;
}
}
}
И объект BusRide, который содержит источник, автобусную остановку от кольца назначения и сколько пассажиров в настоящее время в этой поездке.
public class BusRide implements Runnable{
private BusStop source;
private BusStop destination
private Integer passengers;
public BusRide(BusStop src, BusStop dest){
this.source = src;
this.destination = dest;
}
//setters getters
@Override
public void run(){
setPassengers(15);
this.source.removePassengers(15);
setPassengers(0);
this.destination.increasePassengers(15);
}
}
Основной класс:
public class Main{
public static void main(String[] args){
BusStop a = new BusStop("Bus-stop 1", 50);
BusStop b = new BusStop("Bus-stop 2", 45);
BusStop c = new BusStop("Bus-stop 3", 62);
Thread t1 = new Thread(new BusRide(a,b));
Thread t2 = new Thread(new BusRide(a,c));
}
}
В моем главном классе я хочу создать 2 нити BusRide, которые собираются принять случайное число пассажиров от источника Автобусная остановка в Автобусная остановка назначения. Но я хочу, чтобы потоки BusRide берут пассажиров из объекта, который я им дал, но вместо этого у них есть свои собственные экземпляры объекта BusStop. Итак, как мне сделать два потока работать на том же объекте BusStop, который я им дал?
Я не выяснить проблему. Оба «BusRide» по-прежнему влияют на один и тот же экземпляр «BusStop», на который ссылается 'a'. Разве вы этого не ожидаете? – Mik378
Кстати, зачем делать этот метод приватным? 'private void removePassengers (Integer i)'? Весь код не компилируется. – Mik378
Да, извините, это был несчастный случай, он должен быть публичным. Но моя проблема в том, что она по-прежнему не работает, по какой-то причине потоки не меняют количество пассажиров BusStop. Так как в потоках не удается изменить поле данных объектов. – Alighieri