Как я могу создать «управляемый событиями» фоновый поток в Java?

Мне нравится простота invokeLater () для отправки единиц работы в AWT ЛЕТНЕЕ СЕВЕРОАМЕРИКАНСКОЕ ВОСТОЧНОЕ ВРЕМЯ. Было бы неплохо иметь аналогичный механизм для отправки рабочих запросов в фоновый поток (например, SwingWorker), но, насколько я понимаю, у них нет какого-либо механизма организации очереди и отправки событий, от которого зависит invokeLater ().

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

Это, по сути, могло именно так можно было бы реализовать EDT-подобное поведение в фоновом потоке (или нет?). С другой стороны, мне нравится простота потока, который просто инертно болтается там, обрабатывая «рабочие капли» всякий раз, когда они попадают в него из какой-то невидимой очереди диспетчеризации событий в небе. Предоставляет ли Java способ создания такого «управляемого событиями рабочего потока»? Или, в конце концов, очередь сообщений - правильный способ сделать это? И в аналогичном ключе, есть ли недостатки в методе передачи сообщений invokeLater () ?

5
задан Chap 12 August 2011 в 18:31
поделиться