在线程中读取解析消息

时间:2012-11-19 14:41:02

标签: java multithreading parsing

如果标题有点模糊,请原谅我。我会尝试更好地解释一下我想要完成的事情。

有一个名为parsebytes的函数,它是我实现的外部接口的一部分。它需要一个字节数组和一个长度。此特定程序中的所有解析都在单个线程上运行,因此我希望尽快从parsebytes中获取数据,以便它可以返回获取更多数据。我在伪代码中的方法是这样的: 创建一个外部运行的线程(ParserThreadClass)。 每次调用parsebytes时,通过遍历所有字节并执行byteQueue.add(bytes [i])将字节放入ParserThreadClass中的队列中。这段代码被synchronized(byteQueue)包围 实际上,这应该可以释放parsebytes返回并获得更多数据。

当发生这种情况时,我的ParserThreadClass也在运行。这是run()函数中的代码

while (!shutdown) //while the thread is still running
    {
        synchronized (byteQueue) 
        {
            bytes.addAll(byteQueue);  //an arraylist
            byteQueue.clear();
        }

        parseMessage();   //this will take the bytes arraylist and build an xml message.
    }

我在这里效率过低吗?如果是这样,有人能告诉我应该如何解决这个问题吗?

0 个答案:

没有答案