2013-06-17 4 views
0

Можно ли использовать события и прослушиватели событий для передачи набора данных между двумя потоками в Java? Если я упрощу свою проблему до своей базы, у меня есть производитель и потребитель, каждый из которых «живет» на своей собственной ветке. Производитель создает сообщения, и как только сообщение создается, он «идеал» отправляет событие потребителю. Потребитель будет делать много вещей, но также будет слушать событие производителя. Это означает, что потребитель не может быть заблокирован или ждать производителя.Использование событий для передачи информации между потоками

Если это возможно, где я могу найти общий пример для работы?

Для получения дополнительной информации о модели см

Passing a Set of Objects between threads

ответ

0

Да, вы можете передать какое-то сообщение от одного потока к другому по определенному событию,
вы должны иметь третий статический класс, который должен иметь эти темы бег,

  1. Один поток Отправить информацию в список которой находится в статическом классе в то время как
    Другое
  2. Тема прочитана из этого списка Static Clas, если есть некоторые данные, посылаемые первой нитью, эта нить будет выполнить некоторую операцию в соответствии с этим.
0

Можно ли использовать событие и обработчик событий для передачи набора информации между двумя потоками в Java?

Да.

Если я упрощу свою проблему до своей базы, у меня есть производитель и потребитель, каждый из которых «живет» в своей собственной нити. Производитель создает сообщения, и как только сообщение создается, он «идеал» отправляет событие потребителю.

Слушатели событий и событий сложнее, чем вам необходимо для решения этой проблемы.

Что вам нужно - очередь сообщений.

Java предоставляет ConcurrentLinkedQueue реализацию AbstractQueue. Ваш поток производителя добавляет сообщения в очередь, а ваш потребительский поток принимает сообщения (опросы) из очереди.

Если ваш потребительский поток не находит ничего в очереди, он переходит в режим сна за миллисекунды, а затем снова проверяет очередь.

Если вы решили, что хотите использовать события и прослушиватели событий, прочитайте эту информативную статью, Event Listener. Вам нужно будет сделать List s, которые хранят прослушиватели событий потокобезопасными.

0

«Потребитель будет делать много вещей, но также будет слушать для события производителя».

Просто унифицируйте все выполнение задания потребительской нитью - поставьте все эти «вещи» во входную очередь потребителя, чтобы потребитель блокировал только тогда, когда действительно нечего делать.

Смежные вопросы