1 package org.woehlke.computer.kurzweil.tabs.randomwalk.control;
2
3 import lombok.Getter;
4 import lombok.extern.java.Log;
5 import org.woehlke.computer.kurzweil.commons.tabs.TabController;
6 import org.woehlke.computer.kurzweil.tabs.randomwalk.config.RandomWalk;
7 import org.woehlke.computer.kurzweil.tabs.randomwalk.config.RandomWalkContext;
8
9
10
11
12
13
14
15
16
17
18
19
20 @Log
21 @Getter
22
23
24
25
26
27
28
29 public class RandomWalkController extends Thread implements TabController, RandomWalk {
30
31 private static final long serialVersionUID = 7526471155622776147L;
32
33 private final RandomWalkContext tabCtx;
34 private final int threadSleepTime;
35
36 private Boolean goOn;
37
38 public RandomWalkController(
39 RandomWalkContext tabCtx
40 ) {
41 super("Random Walk-Controller");
42 this.tabCtx = tabCtx;
43 this.goOn = Boolean.TRUE;
44 this.threadSleepTime = tabCtx.getCtx().getProperties().getRandomwalk().getControl().getThreadSleepTime();
45 ;
46 }
47
48 public void run() {
49
50 boolean doIt;
51 do {
52 synchronized (this.goOn) {
53 doIt = goOn.booleanValue();
54 }
55 synchronized (this.tabCtx) {
56
57 this.tabCtx.getTabModel().exec();
58 this.tabCtx.exec();
59 }
60 try {
61 super.sleep(this.threadSleepTime);
62 } catch (InterruptedException e) {
63 log.info(e.getMessage());
64 }
65 }
66 while (doIt);
67
68 }
69
70 public void exit() {
71
72 try {
73 synchronized (goOn) {
74 goOn = Boolean.FALSE;
75 }
76
77 join();
78
79 } catch (InterruptedException e) {
80 log.info(e.getMessage());
81 }
82
83 }
84
85 }