CPU占用率太高,最高可达到95%
最近一个项目里有需求,需要持续不断的从条形码中读取数据,持续读取时间无上限,可能几天甚至几个星期,代码写好,但是发现长时间(有时几个小时有时几天)扫描CPU占用率出奇高,最高达95%,截取log未报任何异常, 然后系统就GG了,只能重启;
下面贴出简化後的Code , 哪位大侠遇到过或能提供思路,甚至解决方案,在下感激不尽!!!!
private void startReceive() {
stopReceive = false;
new Thread(new Runnable() {
@Override
public void run() {
int timeout = 1000;
while (!stopReceive) {
if (mUsbDeviceConnection != null) {
try {
byte[] receiveBytes = new byte[64];
int value = mUsbDeviceConnection.bulkTransfer(mUsbEndpoint, receiveBytes,
receiveBytes.length, timeout);
if (value > 0) {
for (int i = 2; !stopReceive && i < receiveBytes.length; i++) {
byte b = receiveBytes[i];
if (b != 0) {
result += new String(new byte[]{b});
}
if (!stopReceive && !result.equals("") && result != null) {
Runtime.getRuntime().exec("input text " + result);
}
}
}
Thread.sleep(100);
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
}
}).start();
}