/
dmmitrii
/
multithreading
Обзор
Документация
Войти
/
dmmitrii
/
multithreading
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
TelegramService.java
49 строк
2 KB
dmmitrii
multithreading
16 май 2025, 00:38
16 май 2025, 00:38
800c917
Код
Авторство
О чём код?
package multithreading; /** * Класс {@code TelegramService} моделирует работу с Telegram-ботом и базой данных. * */ public class TelegramService { private final Object databaseLock = new Object(); private final Object telegramApiLock = new Object(); public void updateUserData() { synchronized (databaseLock) { System.out.println(Thread.currentThread().getName() + ": Locked database to update user data"); try { Thread.sleep(100); } catch (InterruptedException ignored) {} synchronized (telegramApiLock) { System.out.println(Thread.currentThread().getName() + ": Locked Telegram API inside updateUserData"); // Логика обновления данных и отправки подтверждения } } } public void sendNotification() { synchronized (telegramApiLock) { System.out.println(Thread.currentThread().getName() + ": Locked Telegram API to send notification"); try { Thread.sleep(100); } catch (InterruptedException ignored) {} synchronized (databaseLock) { System.out.println(Thread.currentThread().getName() + ": Locked database inside sendNotification"); // Логика проверки данных и отправки уведомления } } } public static void main(String[] args) { TelegramService service = new TelegramService(); Thread t1 = new Thread(service::updateUserData, "Thread-Update"); Thread t2 = new Thread(service::sendNotification, "Thread-Notify"); t1.start(); t2.start(); } }