如果标题有点模糊,请原谅我。我会尝试更好地解释一下我想要完成的事情。
有一个名为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.
}
我在这里效率过低吗?如果是这样,有人能告诉我应该如何解决这个问题吗?