如何確保多執行緒已經全部執行完成

2022-03-21 16:54:12 字數 1006 閱讀 9272

利用countdownlatch閉鎖實現。

countdownlatch可以使乙個或多個執行緒等待一組事件的發生,閉鎖狀態包含乙個計數器,該計數器被初始化為乙個正數,表示需要等待事件的數量。

發揮主要作用的兩個方法分別是:

countdown();遞減計數器,表示乙個事件已經發生了;

await();等待計數器達到零,如果計數器的值非零,那麼await會一直阻塞直到計數器為零,或等待中的執行緒中斷,或等待超時。

public

class

timetest

}public

static

void main(string args) throws

interruptedexception

finally

});t.start();

}endgate.await();

system.out.println("執行緒執行完成");

}}

另外,我們還可以利用countdownlatch來計算多執行緒執行乙個任務需要的時間。

public

class

timetest

}public

static

void main(string args) throws

interruptedexception

finally

} catch

(interruptedexception ignored)

});t.start();

}long start =system.nanotime();

startgate.countdown();

endgate.await();

long end =system.nanotime();

system.out.println("耗時:" + (end-start));

}

如何確保多執行緒已經全部執行完成

利用countdownlatch閉鎖實現。countdownlatch可以使乙個或多個執行緒等待一組事件的發生,閉鎖狀態包含乙個計數器,該計數器被初始化為乙個正數,表示需要等待事件的數量。發揮主要作用的兩個方法分別是 countdown 遞減計數器,表示乙個事件已經發生了 await 等待計數器達到...

多執行緒如何判斷全部執行緒是否已經全部結束?

提問者 旺旺 瀏覽次數 1904次 class readfilethread implements runnable public void readfilethread int i catch exception e public void run catch exception e public...

多執行緒 如何確定所有任務都執行完成了?

20180502更新 今天學習到了乙個比較強大的類 executorcompletionservice,它是將 executor和blockqueue結合的jdk類,其實現的主要目的是 提交任務執行緒,每乙個執行緒任務直線完成後,將返回值放在阻塞佇列中,然後可以通過阻塞佇列的take 方法返回 對應...