Java多线程编程:从基础到同步处理
1. 测试中的等待机制
在测试环境中,有时需要等待某些操作完成后再继续执行后续代码。例如,在 ServerTest
中,第 5 行的断言调用了 waitForResults
方法,该方法会暂停当前线程的执行,直到所有搜索结果都被检索完毕。
private boolean waitForResults() {
long start = System.currentTimeMillis();
while (numberOfResults < URLS.length) {
try {
Thread.sleep(1);
} catch (InterruptedException e) {
}
if (System.currentTimeMillis() - start > TIMEOUT)
return false;
}
return true;
}
waitForResults
方法通过一个简单的循环实现等待逻辑。每次循环时,线程会暂停 1 毫秒,然后检查是否已经超过了超时时间。如果超过了超时时间,方法将返回 false
,导致断言失败。
1.1 循环暂停的实现
线程的暂停是通过调用 Thread.sleep
方法实现的。该方法接