【发布时间】:2015-06-27 00:54:03
【问题描述】:
我对 Java 中的线程很陌生,我正在使用一个 API,它在内部使用线程并侦听来自对方的数据,我将这些数据放入队列中以供进一步处理。我创建了另一个线程,它不断读取此队列以检索数据和处理并将结果写入文本文件。我正在使用 while(true) 语句在线程中运行无限循环,这会导致 100% 的 CPU 使用率,如果我在其中使用 sleep(10) 会增加延迟,当我收到大约 20 个数据项时,延迟会随着时间的推移而不断增加一秒钟内。
public void run() {
while(true) {
try { Thread.sleep(10); }
catch (InterruptedException e2) { // TODO Auto-generated catch block
e2.printStackTrace();
}
if (!(queue.isEmpt())) {
Tick quote=queue.take();
processTuple(quote);
}
} // end while(true)
} // end run()
任何人都可以建议我在不增加延迟的情况下减少 CPU 使用率的解决方案。
【问题讨论】:
-
显示代码以提供帮助..
-
以下是我的运行方法代码
-
public void run() { while(true) { try { Thread.sleep(10); } catch (InterruptedException e2) { // TODO 自动生成的 catch 块 e2.printStackTrace(); } if (!(queue.isEmpt())) { 勾选报价=queue.take(); processTuple(报价); } } // 结束 while(true) } // 结束 run()
-
@Zafar Iqbal:编辑你的问题并在其中插入代码,缩进4个空格,这样会更容易阅读。