![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| tengorn |
|
||||||||||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 16.7.2011 Репутация: нет Всего: нет |
доброе время суток!
хочеться сделать сервак через BlockingQueue, чтобы при следующей долгой обработке данных, пакеты не терялись вот весь пакет для тестов Сервер
Consumer
Producer
Посылаемый обьект
Клиент
проблема в том что если просто System.out.println(queue.take()); в ServerConsumer выдавать без извлечения обьекта, то выдаются все полученные пакеты как только я хочу извлечь обьект и выдать его данные на консоль, то выдаётся только последний обьект и больше ничего :( помогите устранить ошибку |
||||||||||
|
|||||||||||
| jpr111a |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 25.9.2008 Репутация: нет Всего: нет |
Если ещё интересно, то проблема решается переносом
receivePackage = new DatagramPacket(receiveData, receiveData.length); внутрь цикла в ServerProducer. При теперешней имплементции в очереди оказываются одинаковые объекты. В результате ServerProducer ждёт следующую датаграмму serverSocket.receive(receivePackage) захватив монитор (см. исходники метода). А ServerConsumer ждёт освобождения монитора received.getData() PS. Комментарии о том, что в этом коде является плохим для проакшена, опускаю. Это сообщение отредактировал(а) jpr111a - 10.10.2011, 20:20 |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Работа с сетью | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |