Выполнить действие в фоновом режиме при запуске программы - PullRequest
0 голосов
/ 02 марта 2010

Как выполнить действие в фоновом режиме при запуске программы? Я ожидаю какого-то события onLoad для этой цели. Просто чтобы быть ясно: загрузить интерфейс. Сделайте что-нибудь и загрузите еще один пользовательский интерфейс, основываясь на результатах моего мероприятия.

Ответы [ 3 ]

3 голосов
/ 02 марта 2010

Посмотрите на SwingWorker . Swing является однопоточным, поэтому любая фоновая обработка должна выполняться из отдельного потока, чтобы избежать блокировки потока Swing (диспетчеризация события).

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

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

2 голосов
/ 02 марта 2010

Чтобы добавить к ответу объекта выше:

Если вы используете приложение на основе пользовательского интерфейса, вы должны использовать потоки SwingWorker для выполнения любой работы, не связанной с графическим интерфейсом. Все задачи Swing, например, выполняются в потоке диспетчеризации событий (EDT). Если вы хотите запустить код в EDT, вам следует использовать методы SwingUtilities. invokeLater () добавляет задачу в текущую очередь задач в EDT, а invokeAndWait () запускает задачу и блокирует до ее завершения.

Если вы хотите убедиться, что что-то не работает в EDT, вы можете использовать вызов SwingUtilities.isEventDispatchThread (), чтобы определить, является ли текущий поток EDT.

Если вы инициализируете свой GUI из метода main () вашего приложения, убедитесь, что любые вызовы, чтобы сделать компоненты GUI видимыми, или вообще любое взаимодействие с GUI выполняется на EDT.

1 голос
/ 02 марта 2010

Я не думаю, что есть какой-то конкретный API для "делать вещи в фоновом режиме при запуске".Но вы можете просто создать новый поток, который является стандартным способом выполнения фоновых операций в Java.

Если вы новичок в потоках и параллельном программировании в целом, вам может потребоваться некоторое время, чтобы узнать, что вам нужно,Хорошее начало - учебник по Java:

http://java.sun.com/docs/books/tutorial/essential/concurrency/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...