2016-03-04 2 views
0

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

-Returns строки, которая говорит, что «Красный» в течение 5 сек, «Желтые» в течение 2 секунд, а затем «зеленый» в течение 10 секунд (повтор)

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

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

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

+0

Ваш вопрос трудно понять, потому что вы не задали вопрос. – jheimbouch

+0

Мне жаль, что я попробую расспросить его в вопросе: Может ли кто-нибудь показать мне пример, где ScheduledExecutorService используется для изменения переменной на разные значения в зависимости от времени после выполнения программы? –

ответ

0

Эта ссылка может показать, как использовать 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); 
} 
0

Вы можете найти некоторые идеи в следующем коде (от 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#L0

 Смежные вопросы

  • Нет связанных вопросов^_^