Как в Java вызвать метод основного потока по окончании работы фонового? У меня есть функция поиска на карте памяти файлов определенного типа. Она занимает большое время и потому находится в фоновом потоке. После ее завершения мне необходимо вывести названия этих файлов на экран, а сделать я это могу только из основного потока.
В итоге у меня возникает задача, по завершении фонового потока вызвать метод основного и метод join здесь не подойдет, т.к. мне нужно чтобы основной поток работал в то время, когда работает фоновый, а не ждал его окончания.

21 Авг 2019 в 07:06
269 +1
0
Ответы
1

Для решения данной задачи можно воспользоваться классом SwingUtilities, который предоставляет методы для работы с графическим интерфейсом в Java.

Создайте класс, который будет выполнять поиск файлов определенного типа в фоновом потоке. Пусть этот класс будет реализацией интерфейса SwingWorker.import javax.swing.*;
public class FileSearcher extends SwingWorker<Void, String> {
@Override
protected Void doInBackground() throws Exception {
// Здесь выполняется поиск файлов определенного типа
publish("file1.txt");
publish("file2.txt");
return null;
}
@Override
protected void process(List<String> chunks) {
for (String fileName : chunks) {
// Публикуем найденные файлы
System.out.println(fileName);
}
}
}Теперь создайте основной поток и запустите в нем фоновый поток для поиска файлов.import javax.swing.*;
public class MainThread {
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> {
FileSearcher fileSearcher = new FileSearcher();
fileSearcher.execute();
});
// Другие действия, которые будут выполняться в основном потоке
}
}

Таким образом, после завершения работы фонового потока метод process будет вызван в основном потоке и выведет названия найденных файлов на экран. А основной поток продолжит свою работу независимо от работы фонового потока.

20 Апр 2024 в 13:07
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир