別のクラスで while ループを適切に終了する方法を知りたいと思っていました。
私の「スレーブ」アプリは、 「マスター アプリ」を介して WebSocket に接続されています。この「スレーブアプリ」は、ディレクトリに新しいファイルがあるかどうかを確認しています。今後は、これらの新しいファイルを分析します。
私のスレーブアプリには、開始/一時停止/停止されているかどうかを知らせるコールバックがあります...
私がしたいのは、「マスターアプリ」が開始されたときにループメソッドを起動し(コールバックが開始されましたか?)、マスターアプリが停止したときにループを停止することです...そして....
私のループクラス:
public class Loop extends Thread {
private boolean progIsFinished;
public Loop() {
}
public void run() {
try {
waitingForFiles();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void waitingForFiles() throws Exception {
progIsFinished = false;
final File folder = new File("folder");
long sleepDuration = 10000;
ArrayList<File> newFileList;
int counter = 0;
while (progIsFinished != true) {
newFileList = listLastModifiedFiles(folder, sleepDuration);
Thread.sleep(sleepDuration);
}
}
public static ArrayList<File> listLastModifiedFiles(File folder, long sleepDuration) throws Exception {
ArrayList<File> newFileList = new ArrayList<File>();
// return the new file
return newFileList;
}
}
私のメインクラス:
private Main(){
// read conf.xml and stores variables
readConfig();
if ( ServerConnected ) {
// connect to server via URL
connect( serverURL );
} else
System.out.println("No Conf or No connexion");
}
@Override
public void connectCallback() {
System.out.println("CONNECTED");
}
@Override
public void startCallback() {
// debug
System.out.println("SIMULATION IN PROGRESS");
loop = new Loop(this);
try {
loop.start();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void stopCallback() {
// debug
System.out.println("SIMULATION STOPPED");
}
@Override
public void pauseCallback() {
// debug
System.out.println("SIMULATION IN PAUSE - WAIT FOR RESUME");
}
public static void main(String[] args) {
Main main = new Main();
}
}