2016-03-04 5 views
0

Im ayant tâche où suis demandé de faire un programme serveur sur Java qui accepte plusieurs clients. Le programme serveur va faire rien de plus que simuler un feu de circulation. Connecter le client au programme serveur n'est pas mon problème. Mais pour avoir une sorte de planificateur avec les propriétés suivantes:.obtenir ScheduledExecutorService pour modifier une variable à 3 valeurs différentes

-Retours une chaîne qui dit « Red » pendant 5 sec, pendant 2 secondes « jaune » et « vert » pendant 10 secondes (répétition)

Selon le moment où vous vous connectez au serveur, vous obtiendrez une de ces couleurs comme s'il s'agissait d'un véritable feu de circulation. Mon problème est de contourner ScheduledExecutorService. Je ne suis pas un programmeur très expérimenté, donc toute explication à ce sujet serait très appréciée. Excuse-moi si ma question est difficile à comprendre. Merci d'avance! :)

+0

Votre question est difficile à comprendre parce que vous n'avez pas posté de question. – jheimbouch

+0

Im désolé laissez-moi essayer de le poser dans une question: Quelqu'un peut-il me montrer un exemple où ScheduledExecutorService est utilisé pour changer une variable à différentes valeurs en fonction du temps après l'exécution du programme? –

Répondre

0

Ce lien pourrait montrer comment utiliser 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

Vous pouvez trouver quelques idées dans le code suivant (de 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