#377 Неопределенный порядок выполнения асинхронных задач

Компании:
Aston
Темы:
JavaМногопоточностьКод ревью

Что будет выведено на экран?

public class Main {
    public static void main(String[] args) throws InterruptedException {
        new Test().print();
    }
}

class Test {
    private Object object = new Object();

    public void print() throws InterruptedException {
        CompletableFuture.runAsync(() -> {
            synchronized (object) {
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                System.out.println("1");
            }
        });

        synchronized (object) {
            System.out.println("2");
        }

        CompletableFuture.runAsync(() -> {
            synchronized (object) {
                System.out.println("3");
            }
        });
    }
}

Разбор вопроса

Ментор
Ответь как на реальном собеседовании. Я задам уточняющие вопросы, а затем сравню твой ответ с эталонным и покажу точность в %.
Войди, чтобы начать диалог Ментор ведёт диалог по текущему вопросу и учитывает предыдущие сообщения.
Войти