Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> MultiThreading and Events 
:(
    Опции темы
sol78
Дата 21.12.2007, 20:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 366
Регистрация: 7.7.2007

Репутация: нет
Всего: 0



Ob'yasnite, please, kak rabotaet systema Listener-Event v multithreadinge, esli sobitie generiruetsya v odnom threade a slushateli v drugom...

I znayu, chto ves' Swing postroen na etom, t. e. imeetsya k-l  Concurrent Queue , v kotorom sobirayutsya vse tipi swing eventov, i potom takzhe comcurrent raspredelyayutsya po listeneram...(tak ili poshti tak, izvenite ...).

Kak zhe sdelat' tak chtobi kazhdiy Event nashel svoego slushatelya, v usloviyax multithreadinga??? 
PM MAIL   Вверх
powerOn
Дата 21.12.2007, 20:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


Профиль
Группа: Участник
Сообщений: 4367
Регистрация: 7.10.2005

Репутация: 47
Всего: 159



sol78, используй пожалуйста чекбокс Транслит, иначе текст тяжело воспринимается, да и честно говоря не до конца понимаю вопрос.



--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
sol78
Дата 21.12.2007, 21:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 366
Регистрация: 7.7.2007

Репутация: нет
Всего: 0



 smile  Translit ne rabotaet!!!

powerOn,  chto imenno ne ponyatno, i pricem sdes' GUI?
PM MAIL   Вверх
COVD
Дата 21.12.2007, 21:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 26.7.2005

Репутация: 17
Всего: 43



Очередь Event-Queue одна и много потоков могут туда ставить свои задания. А обслуживает эту очередь один поток - извлекает из очереди по одному заданию и выполняет. Если задание - это событие, то поток идет к списку (наверное это ArrayList ) зарегистрированных слушателей - потребителей  и всем подряд предлагает.  Кому тип события подходит, тот его и принимает. А конкуренция, т.е. синхронизация, только на входе очереди. Там же одновременно разные потоки пытаются добавить задание.  
PM MAIL   Вверх
powerOn
Дата 21.12.2007, 21:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


Профиль
Группа: Участник
Сообщений: 4367
Регистрация: 7.10.2005

Репутация: 47
Всего: 159



Swing это не GUI?

Цитата(sol78 @  21.12.2007,  20:27 Найти цитируемый пост)
Kak zhe sdelat' tak chtobi kazhdiy Event nashel svoego slushatelya, v usloviyax multithreadinga???  

Что бы кто-то нашел кого-то, он должен иметь ссылку на кого-то. Как конкретно организовать взаимодействие зависит от решаемой задачи.


--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
sol78
Дата 21.12.2007, 21:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 366
Регистрация: 7.7.2007

Репутация: нет
Всего: 0



poprobuyu esche raz,
obichnaya sxema Listener-Event
tut
kak ona budet rabotat', esli event generiruetsya v odnom threade, a listeneri v drugom???
powerOn, nalishie slova Swing, ne oznachaet prinadlezhnost' k GUI!
PM MAIL   Вверх
nornad
Дата 21.12.2007, 22:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1079
Регистрация: 16.2.2007
Где: в Караганде

Репутация: 16
Всего: 31



Цитата(sol78 @  22.12.2007,  00:43 Найти цитируемый пост)
kak ona budet rabotat', esli event generiruetsya v odnom threade, a listeneri v drugom???

Объясни, что ты понимаешь, под "листенеры в другом потоке"?
Листенер - это в итоге функция, которая вызывается при обработке события. Как тебе уже объясняли, событие после генерации попадает в очередь, из которой в отдельном (и единственном!) потоке обработки событий (если я не путаю, то он же и есть обычный свинговый поток, хотя в терминологии я малость "плаваю") поочерёдно берутся все события. Далее запускается обработка события листенерами. Всё в том же потоке. То есть, у тебя не могут быть листенеры разбросаны по куче потоков. Они все отрабатывают в одном и том же потоке. Нет, ну при желании конечно можно извратиться, но это уже не будет обычная работа свинга.  smile 


--------------------
Три достоинства программиста: Леность, Нетерпение и Гордость
Ларри Уолл
PM MAIL WWW ICQ Skype MSN   Вверх
powerOn
Дата 21.12.2007, 22:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


Профиль
Группа: Участник
Сообщений: 4367
Регистрация: 7.10.2005

Репутация: 47
Всего: 159



Ну вот я вас и не понял, поскольку читать транслит тяжело.  Прочитав это предложение с учетом упоминания Swing events: 
Цитата(sol78 @  21.12.2007,  20:27 Найти цитируемый пост)
Kak zhe sdelat' tak chtobi kazhdiy Event nashel svoego slushatelya, v usloviyax multithreadinga???  


Мне подумалось что под Event это Swing-овое событие, которое нужно доставить в отдельный поток.  smile 
Но мне не жалко, я могу и обратно в общие вопросы перенести  smile 




--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
sol78
Дата 21.12.2007, 23:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 366
Регистрация: 7.7.2007

Репутация: нет
Всего: 0



nornad,  da mi tut pereskazivaem slova drug druga...
 
vopros ne kasaetsya neposredstveno Swinga...
 
PM MAIL   Вверх
Dims
Дата 22.12.2007, 02:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1016
Регистрация: 21.11.2006

Репутация: 4
Всего: 11



Цитата(sol78 @  21.12.2007,  21:43 Найти цитируемый пост)
kak ona budet rabotat', esli event generiruetsya v odnom threade, a listeneri v drugom???

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

Система событий-слушателей не имеет ничего общего с многопоточностью. Это она просто так называется. Типа "происходит" событие, на него "реагируют" слушатели. А на самом деле это просто жёстко синхронизированная последовательность вызовов функций в одном потоке. 

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

Если объекты асинхронны (работают в разных потоках), то нужно как-то самому обеспечить синхронизацию. Например, пометить synchronized все методы, которые исполняют события. 

Другой способ -- использовать функцию SwingUtilities.invokeLater. Она обеспечивает запуск кода в том потоке, который выполняет Свинг. Тогда обычные объекты, синхронные со Свингом, будут испускать или выполнять события обычным образом, а асинхронные -- через эту функцию.

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0482 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.