Skip to content
Snippets Groups Projects
Ticker.java 755 B
Newer Older
  • Learn to ignore specific revisions
  • Guyslain's avatar
    Guyslain committed
    package fr.univamu.l2mi.ticker;
    
    NAVES Guyslain's avatar
    NAVES Guyslain committed
    
    import java.util.ArrayList;
    import java.util.List;
    
    public class Ticker {
    
        private Thread ticking;
    
    NAVES Guyslain's avatar
    NAVES Guyslain committed
        private final List<Tickable> listeners = new ArrayList<>();
    
    NAVES Guyslain's avatar
    NAVES Guyslain committed
    
    
    NAVES Guyslain's avatar
    NAVES Guyslain committed
        public void add(Tickable listener) {
    
    NAVES Guyslain's avatar
    NAVES Guyslain committed
            listeners.add(listener);
        }
    
        public void startTicking() {
            ticking = new Thread(() -> {
                try {
                    while (true) {
                        Thread.sleep(1000);
    
    NAVES Guyslain's avatar
    NAVES Guyslain committed
                        listeners.forEach(Tickable::notifyTick);
    
    NAVES Guyslain's avatar
    NAVES Guyslain committed
                    }
                } catch (InterruptedException exc) {
                    // Done
                }
            });
            ticking.setDaemon(false);
            ticking.start();
        }
    
    
        public void stopTicking() {
            ticking.interrupt();
        }
    }