0

我想知道如何在另一个类中正确退出 while 循环。

我的“从属”应用程序通过我的“主应用程序”与 WebSocket 连接。这个“从属应用程序”正在检查目录中是否有新文件。对于未来,它将分析这些新文件。

在我的从属应用程序中,我有 Callback 告诉我它是否已启动/暂停/停止...

我想要的是在我的“主应用程序”启动时启动我的循环方法(通过我的回调启动?),在我的主应用程序停止时停止我的循环......并且......

我的循环类:

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