Многопоточность с использованием fork() и join()

149
30 июня 2017, 05:47

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

Для реализации задачи необходимо пользоваться fork() и join().

К сожалению, при выполнении задачи происходит бесконечный поиск по первой указанной директории, а поддиректории не затрагиваются.

public class mainController {
    private void search() {
        ForkJoinPool forkJoinPool = new ForkJoinPool();
        // chosenDirectory - директория, которую выбрал пользователь для поиска в ней файла.
        MyRecursiveTask myRecursiveTask = new MyRecursiveTask(chosenDirectory); 
        forkJoinPool.invoke(myRecursiveTask);
    }
}
public class MyRecursiveTask extends RecursiveTask<File> {
    private File directory;
    public MyRecursiveTask(File directory) {
        this.directory = directory;
    }
    mainController mainController = new mainController();
    @Override
    protected File compute() {
        String filename = mainController.getFilename();
        File directory = mainController.getFilepath();
        //список подзадач
        List<MyRecursiveTask> subtasks = new LinkedList<>(); 
        File result = null;
        if(directory.listFiles() !=null && directory.isDirectory()) {
            for(File el: directory.listFiles()) {
                if(el.getName().equals(filename)) result = el;
                else if(el.isDirectory() && el.listFiles() != null){
                    MyRecursiveTask subTask = new MyRecursiveTask(el);
                    subTask.fork();
                    subtasks.add(subTask);
                }
            }
            for (MyRecursiveTask a: subtasks){
                result = a.join();
            }
        }
        return result;
    }
}
READ ALSO
Behavior. Зависимость SearchView от BottomSheet

Behavior. Зависимость SearchView от BottomSheet

Нужно чтобы SearchView уходила наверх при движении BottomSheet

206
Не выводятся названия файлов с сервера в listview

Не выводятся названия файлов с сервера в listview

Всем доброго времени сутокЯ пишу приложение, в котором нужно подключиться к FTP серверу

153
Как сделать перетекание цвета в меню как на картинке?

Как сделать перетекание цвета в меню как на картинке?

Не могу понять как сделать выделенный элемент с перетеканием цвета из красного в черныйНужно ли использовать background-image или можно обойтись...

289
Оптимизация HTML, CSS

Оптимизация HTML, CSS

Вопрос по оптимизации HTML кодаИмеется подобная структура

215