Поток событий в Java - PullRequest
       6

Поток событий в Java

4 голосов
/ 05 января 2010

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

Важно: эти задачи НЕ должны выполняться в потоке диспетчера событий.

Что-то вроде:

BackgroundEventThread backgroundEventThread  = new BackgroundEventThread();

потом, позже и во многих местах в коде:

Runnable thingToDo = new Runnable(){...};

backgroundEventThread.executeThis(thingToDo);
//the things to do will be executed in the order in which they are posted.

Класс BackgroundEventThread должен быть довольно простым для кода, но мне было интересно, существует ли такой класс в каком-то неизвестном мне месте в JDK или в какой-то общей библиотеке ...

РЕДАКТИРОВАТЬ : Я не знаю заранее, сколько задач нужно выполнить в этом потоке.

Я мог бы иметь:

  • task0 (действительно короткое), происходящее в t0
  • task1 (долго обрабатывать ...) происходит в t0 + 1 с
  • задача 2 (короткая) происходит в t0 + 5 с и т. Д.
  • task3 (и т. Д. И т. Д.)

И мне нужно, чтобы задача 2 (которую я не знаю заранее) выполнялась после задачи 1, и я хочу, чтобы все эти задачи выполнялись как можно скорее.

Точно так же, как задачи, опубликованные в EDT, но НЕ в EDT.

Ответы [ 3 ]

4 голосов
/ 05 января 2010

Похоже на работу для java.util.concurrent.ThreadPoolExecutor .

Вы можете настроить это с помощью «пула» из одного потока, а затем добавить к нему задачи для выполнения за вас.

2 голосов
/ 05 января 2010

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

2 голосов
/ 05 января 2010

Чек SwingWorker

Абстрактный класс для выполнения длительных GUI-взаимодействующих задач в выделенном потоке.

Все необходимые подробности о том, как его использовать, находятся в javadoc.

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