Отделение логики приложения от Swing-потока

132
15 февраля 2018, 15:09

Добрый день. Я пишу приложение с графическим интерфейсом используя Swing. По нажатию кнопки мне необходимо обращаться к базе данных (допустим, получить все записи из таблицы). И, чтобы интерфейс был интерактивен во время запроса, мне необходимо исполнять действия с БД в отдельном потоке. Пока что мне в голову пришла только одна мысль : по нажатию определенной кнопки запускать новый поток так

 someButton.addActionListener((ActionEvent e) -> {
       new Thread(() -> {}); // в теле лямбды написать метод для БД
 })

Можно ли сделать лучше?

Answer 1

Используйте CompleteableFuture. Запустили, получили результат, в обработчике сделали invokeLater в UI поток с результатом.

Answer 2

В Вашем случае, очень подойдет абстрактный класс SwingWorker в нем присутствуют методы для обработки в background-е, а так же методы по завершению работы.

READ ALSO
Отключение локализации библиотеки в Android приложении

Отключение локализации библиотеки в Android приложении

Всем приветТакой вопрос, как отключить локализацию текстов в UI подключаемой библиотеки? Использую Zendesk Support SDK for Android и пытаюсь сделать так...

123
Получить TAG элемента listView

Получить TAG элемента listView

Добрый деньЕсть ListView в котором два TextView у каждого из которых свой тег

193
Как остановить MediaPlayer используя слушатель?

Как остановить MediaPlayer используя слушатель?

Запускаю на воспроизведение вот так:

128
Как в OpenGL отображаются модели?

Как в OpenGL отображаются модели?

obj файл содержит координаты вершин, вот например одна из них: v -1174286 32

180