大家好,这样的代码可能会导致流程滞后吗?
while(true)
if(!connected) break;
正如我们所见,它一直在检查条件。如果我在每次迭代中设置小睡眠会更快吗?
该代码在Android GingerBread上运行。
编辑:
它等待其他线程完成并将变量 Connected 设置为 false。变量连接就像锁一样使用。线程通常发现它为真并等待为假。然后设置为 true 并且只在最后更改它。
大家好,这样的代码可能会导致流程滞后吗?
while(true)
if(!connected) break;
正如我们所见,它一直在检查条件。如果我在每次迭代中设置小睡眠会更快吗?
该代码在Android GingerBread上运行。
编辑:
它等待其他线程完成并将变量 Connected 设置为 false。变量连接就像锁一样使用。线程通常发现它为真并等待为假。然后设置为 true 并且只在最后更改它。
我相信它可能是这样的:
while(connected) {
// do stuff...
我认为在循环中添加小睡眠会更好,以便为其他进程释放处理器资源,尤其是在单核处理器上。
尝试这样的事情:
private Integer connected;
private ConnectedListener connectedListener;
public interface ConnectedListener {
public void onDisconnected();
}
private void startThreads() {
for (int i = 0; i < 10; i++) {
new Thread(new Runnable() {
@Override
public void run() {
synchronized (connected) {
connected++;
}
// do some random long work
synchronized (connected) {
connected--;
if (connected == 0 && connectedListener != null) {
//let the listener know that we are completely disconnected
connectedListener.onDisconnected();
}
}
}
}).start();
}
}