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

Java 使用join和InterruptedException确定线程状态?,java,multithreading,Java,Multithreading,似乎这个方法是接收一个线程数组,然后确定它们是否已经使用InterruptedException完成,这在我看来似乎是合理的 private static void waitUntilAllThreadsFinished(Thread[] threadArr) { for(int i=0; i<threadArr.length; i++) { try { threadArr[i].join(); } catch (Interr

似乎这个方法是接收一个线程数组,然后确定它们是否已经使用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");
    }
}
private静态void waitUntillallThreadsFinished(线程[]threadArr){

对于(int i=0;i如果您只想知道
线程
是否已中断,则使用
公共布尔值isInterrupted()
线程
引用上的
方法。此代码试图在每个线程完成时阻止当前线程,并在同时中断时重试。

我认为更合适

我不会强制执行抛出和捕获,因为这不是免费的。thread类具有访问当前线程的方法t实例的状态。

此代码不仅确定是否所有线程都已完成,而且等待所有线程完成。并没有使用InterruptedException来完成此操作。如果join()调用已完成(死)线程,则代码将毫无例外地继续运行。
但是我想它会工作的…

当当前线程操作(这里是
join
)被中断时,会抛出InterruptedException。