【发布时间】:2011-09-18 18:55:26
【问题描述】:
我有一个主 for 循环,可以向外部系统发送请求。外部系统可能需要几秒钟甚至几分钟才能做出响应。
此外,如果请求数达到 MAX_REQUESTS,当前的 for 循环应该 SLEEP 几秒钟。
这是我的场景。假设主 for 循环进入休眠状态 5 秒,因为它已达到 MAX_REQUESTS。然后说以前的外部请求从 callExternalSystem() 返回。当前处于 SLEEP 状态的主 for 循环线程会发生什么?它会被中断并继续处理还是继续 SLEEP?
for(...){
...
while(numRequestsProcessing > MAX_REQUESTS){
Thread.sleep(SLEEP_TIME);
}
...
callExternalSystem();
}
提前致谢。
【问题讨论】:
-
您是否添加了睡眠以试图让 numRequestsProcessing 下降?所以你不交换服务?一个固定的线程池会给你(或多或少)或通过等待/通知/条件进行线程间合作......?
标签: java multithreading