1

誰かがJavaで例を提供したり、ソケットから行を非同期的に読み取り、各行をBlockingQueueに入れるクラスの実装についてアドバイスしたりできますか。ソケットが接続されており、BlockingQueueとコンシューマーがすでに存在していると仮定します。

編集:もう1つ、非アクティブな状態が一定時間続くとタイムアウトし、コマンドですぐに停止する機能が必要です。

それは宿題ではありません、私は単にこれをうまくそして確実に行う方法の完全な例を見つけることができませんでした。

どうもありがとうございます。

4

1 に答える 1

0

正直に言うと、あなたはすでに仕事を終えているように聞こえます。あなたがする必要があるのは、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();
}
于 2011-03-18T19:35:48.223 に答える