Встречается на собеседованиях • сегодня

В чем разница между стеком и кучей в многопоточности

Стек — это область памяти, выделяемая для каждого потока. Он хранит локальные переменные и вызовы методов. Каждый поток имеет свой собственный стек, поэтому доступ к нему потокобезопасен.

Куча — общая область памяти для всех потоков. Здесь хранятся объекты, созданные через new. Так как куча доступна всем потокам, требуется синхронизация (synchronized, volatile, ConcurrentHashMap и т. д.).

Пример:

java
public class Example {
    private static int sharedVar = 0; // хранится в куче
    public static void main(String[] args) {
        int localVar = 5; // хранится в стеке потока
        new Thread(() -> {
            sharedVar++; // требует синхронизации
            System.out.println(localVar); // потокобезопасно (копия в стеке)
        }).start();
    }
}

Итог:

  • Стек — приватный для потока, быстрый.
  • Куча — общая, требует синхронизации.
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы