Читайте строки из Socket и помещайте каждый в BlockingQueue - PullRequest
1 голос
/ 18 марта 2011

Может ли кто-нибудь предоставить примеры на Java или посоветовать реализацию класса, который асинхронно читает строки из сокета и помещает каждую строку в BlockingQueue. Предположим, что сокет подключен, а BlockingQueue и потребитель уже существуют.

Изменить: Еще одна вещь, он должен иметь возможность тайм-аут после периода бездействия и немедленно остановиться по команде.

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

Большое спасибо.

1 Ответ

0 голосов
/ 18 марта 2011

Похоже, вы уже сделали работу, если честно. Все, что вам нужно сделать, это создать BlockingQueue и создать поток для его обработки, который, я думаю, является вашим потребителем. Предполагая, что у вас есть DataInputStream 'in' ...

Примерно так:

BlockingQueue<String> receivedQueue = new LinkedBlockingQueue<String>();
public void run()
{
    while (true)
    {
        try
        {
            receivedQueue.put(in.readUTF());
        } catch (EOFException e)
        {
            ch.getClient().disconnect();
            break;
        } catch (IOException e)
        {
            break;
        } catch (InterruptedException e)
        {
            break;
        }
    }
    theQueueProcessor.interrupt();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...