Многопоточный компилятор, возвращающий разные выходные данные при быстром повторении выполнения

У меня есть многопоточный компилятор, разработанный на Java. Он получает n файловых путей и запускает один поток для каждого полученного файлового пути.

Все работает нормально, если я выполняю несколько операций с одним файлом. Однако, когда я вводю несколько файлов и выполняю их один раз в секунду, они показывают разные результаты синтаксического анализа в загруженном исходном коде.

Это было реализовано с использованием метода парсера рекурсивного спуска. Функция, которая вызывает потоки, показана следующим образом:

public static void main(String[] args) {

    if(args.length == 0){
        System.out.println("No file path informed. Please inform file paths.");
        System.out.println("Usage: java -jar KPiler.jar file1.txt file2.txt");
    }

    List<String> paths = new ArrayList<>();
    List<String> errorMessages = new ArrayList<>();
    List<Parser> compileJobs = new ArrayList<>();

    paths.addAll(Arrays.asList(args));


    while(paths.size() > 0 || compileJobs.size() > 0){

        if(compileJobs.size() < MAX_JOBS && paths.size() > 0){
            compileJobs.add(new Parser(paths.remove(0)));
            compileJobs.get(compileJobs.size() -1).start();
        }

        for(int i=0 ; i<compileJobs.size(); i++){
            if(!compileJobs.get(i).isAlive()){
                errorMessages.add(compileJobs.get(i).getErrorMessages());
                compileJobs.remove(i);
            }
        }
    }
    //PRINTING OUTPUT
    for(int i = 0; i<errorMessages.size(); i++){
        System.out.println(errorMessages.get(i));

    }

}

Связано ли это с несколькими обращениями к файлам?

0 ответов

Другие вопросы по тегам