Получить ScheduledExecutorService, чтобы изменить переменную на 3 различных значения

У меня возникла задача, где меня попросили сделать серверную программу на Java, которая принимает несколько клиентов. Программа сервера не будет делать ничего, кроме симуляции светофора. Подключение клиента к серверу программы не моя проблема. Но иметь какой-то планировщик со следующими свойствами:

-Возврат строки, в которой на 5 секунд написано "красный", на 2 секунды "желтый", а затем на 10 секунд "зеленый" (повтор)

В зависимости от того, когда вы подключаетесь к серверу, вы получите один из этих цветов, как если бы это был настоящий светофор.

моя проблема заключается в том, чтобы обернуть голову вокруг ScheduledExecutorService. Я не очень опытный программист, поэтому любые объяснения по этому поводу будут высоко оценены.

Извините, если мой вопрос трудно понять. Огромное спасибо заранее!:)

2 ответа

Эта ссылка может показать, как использовать ScheduledExecutorService:

https://github.com/csrg-utfsm/acscb/blob/master/ACS/LGPL/CommonSoftware/jacsutil/src/alma/acs/concurrent/ThreadLoopRunner.java#L137

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;
}

http://code.openhub.net/file?fid=fPRP5s8NPWNQmdQRgi2Cl5Gh5as&cid=gm3VRNBX7Kw&s=get%20ScheduledExecutorService%20to%20change%20a%20variable%20to%203%20different%20values&pp=0&fl=Java&ff=1&filterChecked=true&fp=4419&mp,=1&ml=0&me=1&md=1&projSelected=true

Другие вопросы по тегам