Загрузка данных


public class Lift {
    private static int reis = 0;
    private static final Object lock = new Object();

    public static void main(String[] args) {
        Thread fir_lift = new Thread(new liftTask(1));
        Thread sec_lift = new Thread(new liftTask(2));

        fir_lift.start();
        sec_lift.start();

        try {
            fir_lift.join();
            sec_lift.join();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        System.out.println("Оба лифта завершили работу. Всего рейсов: " + reis);
    }

    static class liftTask implements Runnable {
        private final int id;

        liftTask(int id) {
            this.id = id;
        }

        @Override
        public void run() {
            for (int ri = 1; ri <= 5; ri++) {

                for (int fl = 1; fl <= 5; fl++) {
                    System.out.printf("Лифт %d: этаж %d, рейс %d%n", id, fl, ri);
                    sleep(800);
                    sleep(500);
                }

                for (int fl = 4; fl >= 1; fl--) {
                    System.out.printf("Лифт %d: этаж %d, рейс %d%n", id, fl, ri);
                    sleep(800);
                    sleep(500);
                }

                synchronized (lock) {
                    reis++;
                }
            }
            System.out.printf("Лифт завершил работу", id);
        }

        private void sleep(long millis) {
            try {
                Thread.sleep(millis);
            } catch (InterruptedException e) {
                Thread.currentThread().interrupt();
            }
        }
    }
}