从Socket读取行并将每个行放入BlockingQueue

时间:2011-03-18 19:23:20

标签: java sockets blockingqueue

任何人都可以用Java提供示例,或者建议实现一个从套接字异步读取行并将每行放入BlockingQueue的类。假设套接字已连接,并且BlockingQueue和consumer已经存在。

编辑:还有一件事,它需要能够在一段时间不活动后超时,并立即停止命令。

这不是家庭作业,我根本无法找到完整的例子来说明如何做得好,而且可靠。

非常感谢。

1 个答案:

答案 0 :(得分:0)

说实话,你听起来已经完成了这项工作。你需要做的就是创建一个BlockingQueue并有一个线程来处理它,我想你的消费者。假设你在'...

中有一个DataInputStream

这样的事情:

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();
}