使用join和InterruptedException确定线程状态?

时间:2011-10-17 09:02:56

标签: java multithreading

似乎是这个方法接受了一个线程数组,然后确定它们是否已经使用InterruptedException完成,这对我来说似乎是合理的。

private static void waitUntilAllThreadsFinished(Thread[] threadArr) {
    for(int i=0; i<threadArr.length; i++) {
        try {
            threadArr[i].join();
        } catch (InterruptedException e) { }
        log.debug("thread ["+threadArr[i].getName()+"] have completed");
    }
}

4 个答案:

答案 0 :(得分:1)

如果您只是想知道thread是否已被中断,请使用public boolean isInterrupted()参考上的thread方法。这段代码试图在每个线程完成时阻塞当前线程,并在其同时被中断时重试。

答案 1 :(得分:1)

我认为getState更合适

答案 2 :(得分:0)

我不会强迫投掷和捕获,因为它不是免费的。 Thread类具有访问实例当前状态的方法。

答案 3 :(得分:0)

此代码不仅确定所有线程是否已完成,而且等待以完成所有线程。并且它没有使用InterruptedException来执行此操作。如果join()调用完成(死)线程,代码将继续无异常。 但它会起作用,我猜......