01: /*
02: * JFolder, Copyright 2001-2006 Gary Steinmetz
03: *
04: * Distributable under LGPL license.
05: * See terms of license at gnu.org.
06: */
07:
08: package org.jfolder.engines;
09:
10: //base classes
11:
12: //project specific classes
13:
14: //other classes
15:
16: abstract class AbstractEngineThread extends Thread {
17:
18: private boolean allDone = false;
19:
20: protected AbstractEngineThread() {
21: super ();
22: setDaemon(true);
23: this .allDone = false;
24: }
25:
26: protected synchronized void setAllDone(boolean inAllDone) {
27: this .allDone = inAllDone;
28: }
29:
30: protected synchronized boolean getAllDone() {
31: return this .allDone;
32: }
33:
34: protected abstract boolean isActionReady();
35:
36: protected abstract void action();
37:
38: public void run() {
39: while (!getAllDone()) {
40: if (isActionReady()) {
41: action();
42: } else {
43: try {
44: Thread.sleep(5000);
45: } catch (InterruptedException ie) {
46: //do nothing
47: }
48: }
49: }
50: }
51: }
|