Получить ScheduledExecutorService, чтобы изменить переменную на 3 различных значения
У меня возникла задача, где меня попросили сделать серверную программу на Java, которая принимает несколько клиентов. Программа сервера не будет делать ничего, кроме симуляции светофора. Подключение клиента к серверу программы не моя проблема. Но иметь какой-то планировщик со следующими свойствами:
-Возврат строки, в которой на 5 секунд написано "красный", на 2 секунды "желтый", а затем на 10 секунд "зеленый" (повтор)
В зависимости от того, когда вы подключаетесь к серверу, вы получите один из этих цветов, как если бы это был настоящий светофор.
моя проблема заключается в том, чтобы обернуть голову вокруг ScheduledExecutorService. Я не очень опытный программист, поэтому любые объяснения по этому поводу будут высоко оценены.
Извините, если мой вопрос трудно понять. Огромное спасибо заранее!:)
2 ответа
Эта ссылка может показать, как использовать ScheduledExecutorService:
public ThreadLoopRunner(Runnable task, long delayTime, TimeUnit unit, final ThreadFactory tf, Logger logger, String name) {
this.logger = logger;
this.loopName = ( (name != null && !name.trim().isEmpty()) ? name.trim() : null );
this.runner = new ScheduledThreadPoolExecutor(1, new NamedThreadFactory(tf, loopName));
this.taskWrapper = new TaskWrapper(task, loopLock, logger);
this.delayMode = ScheduleDelayMode.FIXED_RATE;
isDefunct = new AtomicBoolean(false);
setDelayTime(delayTime, unit);
}
Вы можете найти некоторые идеи в следующем коде (из code.openhub.net):
public void start() {
multicastService.get().start();
udpService.get().start();
connectionDispatcher.get().addConnectionAcceptor(this, false, "CONNECT", "\n\n");
backgroundExecutor.scheduleWithFixedDelay(incomingValidator,
timeBetweenValidates, timeBetweenValidates,
TimeUnit.MILLISECONDS);
_started = true;
}