/
R0man
/
TestTask
Обзор
Документация
Войти
/
R0man
/
TestTask
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/main/java/ru/badin/funnyTelephoneDirectory/Main.java
71 строка
3 KB
romanbadin
Добавлен PhoneNumberGenerator.java и Main.java для случайных тестов
05 июл 2025, 10:59
05 июл 2025, 10:59
194cd8e
Код
Авторство
О чём код?
package ru.badin.funnyTelephoneDirectory; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import ru.badin.funnyTelephoneDirectory.service.PhoneDirectoryImpl; import java.util.Random; import java.util.concurrent.TimeUnit; /** * Класс для демонстрации работы телефонного справочника. * - 100,000 записей * - Случайные интервалы обновления (500-5000 мс) * - Случайные параметры M (0-30 сек) и T (60-300 сек) */ public class Main { private static final Logger logger = LoggerFactory.getLogger(Main.class); private static final int DIRECTORY_SIZE = 100_000; private static final Random random = new Random(); public static void main(String[] args) { try { logger.info("=== Starting Phone Directory Application ==="); // Инициализация сервиса PhoneDirectoryImpl phoneDirectory = new PhoneDirectoryImpl(); // Заполнение справочника logger.info("Initializing directory with {} records...", DIRECTORY_SIZE); phoneDirectory.initializeDirectory(DIRECTORY_SIZE); // Генерация случайных параметров int T = generateRandomValue(60, 300); // Время работы: 60-300 сек int M = generateRandomValue(0, 30); // Сдвиг в прошлое: 0-30 сек logger.info("Program parameters: T={} sec, M={} sec", T, M); // Запуск фоновых обновлений logger.info("Starting background updates..."); phoneDirectory.startRandomUpdates(); // Ожидание указанное время logger.info("Waiting for {} seconds...", T); TimeUnit.SECONDS.sleep(T); // Вывод результатов logger.info("=== Printing records from {} seconds ago ===", M); phoneDirectory.printRecordsFromPast(M); // Корректное завершение logger.info("Shutting down..."); phoneDirectory.shutdown(); logger.info("=== Application finished successfully ==="); } catch (InterruptedException e) { logger.error("Main thread was interrupted", e); Thread.currentThread().interrupt(); } catch (Exception e) { logger.error("Application failed", e); } } /** * Генерирует случайное значение в указанном диапазоне * @param min минимальное значение (включительно) * @param max максимальное значение (включительно) * @return случайное значение */ private static int generateRandomValue(int min, int max) { return random.nextInt(max - min + 1) + min; } }