Java Backend | YeaHub
933 subscribers
238 photos
28 videos
3 files
415 links
Теория, подготовка к интервью и курсы для Java разработчиков

YeaHub — это платформа для IT-специалистов, объединяющая обучение, карьерный рост, развитие и сообщество единомышленников.

Платформа: https://yeahub.ru

Для связи: @ruslan_kuyanets
Download Telegram
Многопоточность в Java: synchronized, volatile и Lock 🛡️ (Часть 2)

Привет, коллеги! 👋

Вторая часть про многопоточность. Сегодня разбираем механизмы синхронизации.

synchronized методы

class SafeCounter {
private int count = 0;

public synchronized void increment() {
count++; // Теперь безопасно
}

public synchronized int getCount() {
return count;
}
}


synchronized блоки

class Resource {
private final Object lock = new Object();

public void doWork() {
synchronized(lock) {
// критическая секция
}
}
}


volatile переменные

class TaskProcessor {
private volatile boolean running = true;

public void stop() {
running = false; // Видимость между потоками
}

public void process() {
while (running) {
// работа
}
}
}


ReentrantLock

class LockedCounter {
private final ReentrantLock lock = new ReentrantLock();
private int count = 0;

public void increment() {
lock.lock();
try {
count++;
} finally {
lock.unlock();
}
}
}


Сравнение подходов

synchronized:
- Простота использования
- Автоматическое управление
- Встроено в язык

ReentrantLock:
- Гибкость (tryLock, fair lock)
- Явное управление
- Требует аккуратности

В третьей части разберем Concurrent коллекции, пулы потоков и современные подходы!

Какие механизмы синхронизации используете вы? 👇

#java #interview #multithreading #synchronized
1🔥1
#Собес #java #collections #multithreading

🤔 Middle+ Java Backend разработчик в компанию Госуслуги

Техническое собеседование. Лето 2024. Вилка: 300-350к. Опыт в резюме: 4+ года. В конце собеседования были задачи на структуры данных, оптимизацию запросов и работу с БД.

💬 Вопросы:

- Как логировать время выполнения методов в бинах Spring унифицированно?

- Как централизованно обрабатывать исключения в REST-контроллерах?

- Как работает @Transactional и что происходит, если метод без аннотации вызывает метод с аннотацией?

- Как спроектировать доступ к балансам пользователей из разных потоков, чтобы операции были консистентны?

- Какие механизмы синхронизации можно использовать, кроме synchronized и Atomic?

👉 Все вопросы из этого собеседования (17)

📣 Хочешь больше собесов?
Подпишись на наш главный канал
1