有没有办法在整体超时的情况下同时加入一组线程?
假设我们有Collection<Thread> threads;
和int timeout;
。如果我不关心超时,我会做
for (Thread t : threads)
t.join();
但我想等到所有线程都完成,或者经过一定时间,以先到者为准。我正在寻找ThreadGroup.join(int)
可以做到这一点的(假设的)。
请注意,我要求的与做的不同
for (Thread t : threads)
t.join(timeout);
相反,我正在寻找比
int timeout = 10000;
for (Thread t : threads) {
if (timeout <= 0) break;
long start = System.currentTimeMillis();
t.join(timeout);
long end = System.currentTimeMillis();
// substract time elapsed from next timeout:
timeout -= (int) (end - start);
}