0

別のクラスで 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(); 
    }
}
4

0 に答える 0