Я пытаюсь заставить один метод ("getRecordAndBufferNext") запускаться в одном потоке - так что, если другой запрос для этого метода происходит до того, как первый завершится, он будет поставлен в очередь позади первого, а не отправили в другую ветку и гоняли с первой. Я не знаю, отвечает ли это на ваш вопрос ....? Я знаю, что должен получить работу от потока GUI; Я просто хочу убедиться, что рабочие запросы («получить следующую запись из набора данных») выполняются один за другим, а не одновременно.

равится простотаinvokeLater() для отправки единиц работы в AWT EDT. Было бы неплохо иметь аналогичный механизм для отправки рабочих запросов в фоновый поток (такой как SwingWorker), но, насколько я понимаю, у них нет какого-либо механизма организации очередей и отправки событий, от которого зависит invokeLater ().

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

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

Ответы на вопрос(2)

Ваш ответ на вопрос