1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- /*
- * To change this license header, choose License Headers in Project Properties.
- * To change this template file, choose Tools | Templates
- * and open the template in the editor.
- */
-
- package EierUhrKomponente;
-
- import java.util.concurrent.ExecutorService;
- import java.util.concurrent.Executors;
- import java.util.concurrent.Flow;
- import java.util.concurrent.SubmissionPublisher;
- import java.util.logging.Level;
- import java.util.logging.Logger;
- import ohmlogger.OhmLogger;
-
- /**
- *
- * @author chris
- */
- public class EierUhrModel implements Runnable
- {
- private int zahl;
- private ExecutorService exe;
- private boolean laufend;
- private static Logger lg = OhmLogger.getLogger();
- private SubmissionPublisher<Integer> ipublisher;
-
- public EierUhrModel()
- {
- zahl = 100;
- exe = Executors.newSingleThreadExecutor();
- ipublisher = new SubmissionPublisher<>();
-
- }
-
- void start()
- {
- exe.submit(this);
- laufend = true;
- lg.info("Start Model");
-
- }
-
- public void initZahl(int zahl)
- {
- this.zahl = zahl;
- lg.info("Reset Zahl to: " + Integer.toString(zahl));
- start();
- }
-
- @Override
- public void run()
- {
- while(laufend)
- {
- lg.info(Integer.toString(zahl));
- if(zahl > 0)
- {
-
- try
- {
- Thread.sleep(1000);
- zahl -= 1;
- ipublisher.submit(zahl);
- }
- catch (InterruptedException ex)
- {
- lg.info("error: ");
- Logger.getLogger(EierUhrModel.class.getName()).log(Level.SEVERE, null, ex);
- }
- }
- else
- {
- lg.info("0 erreicht");
- stop();
- }
- }
-
- }
- public void addSubscription(Flow.Subscriber<Integer> subscriber)
- {
- ipublisher.subscribe(subscriber);
- }
- public void stop()
- {
- laufend = false;
- }
-
-
-
- }
|