1

大家好,这样的代码可能会导致流程滞后吗?

while(true)
if(!connected) break;

正如我们所见,它一直在检查条件。如果我在每次迭代中设置小睡眠会更快吗?

该代码在Android GingerBread上运行。

编辑:

它等待其他线程完成并将变量 Connected 设置为 false。变量连接就像锁一样使用。线程通常发现它为真并等待为假。然后设置为 true 并且只在最后更改它。

4

3 回答 3

1

我相信它可能是这样的:

while(connected) {
// do stuff... 
于 2013-02-28T12:48:35.543 回答
1

我认为在循环中添加小睡眠会更好,以便为其他进程释放处理器资源,尤其是在单核处理器上。

于 2013-02-28T13:13:04.213 回答
1

尝试这样的事情:

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();
    }
}
于 2013-02-28T13:18:37.500 回答