fun test2() {
val countDownLatch = CountDownLatch(5)
val start = System.currentTimeMillis()
for (i in 0 until 5) {
val thread = Thread(Runnable {
Thread.sleep((i * 1000).toLong())
println("${Thread.currentThread().name}:执行结束")
countDownLatch.countDown()
})
thread.start()
}
//锁住主线程
countDownLatch.await()
println("所有线程结束")
val end = System.currentTimeMillis()
println((end - start) / 1000)
}
private fun test1() {
val newFixedThreadPool = Executors.newFixedThreadPool(5)
val start = System.currentTimeMillis()
for (i in 0 until 5) {
val runnable = Runnable {
Thread.sleep((i * 1000).toLong())
println("${Thread.currentThread().name}:执行结束")
}
newFixedThreadPool.submit(runnable)
}
newFixedThreadPool.shutdown()
while (true) {
if (newFixedThreadPool.isTerminated) {
println("所有线程结束")
break
}
}
val end = System.currentTimeMillis()
println((end - start) / 1000)
}
Android多线程执行判断结束标志
于 2022-02-28 13:47:54 首次发布
本文通过两个示例函数`test1`和`test2`,分别演示了使用`CountDownLatch`实现多线程同步以及使用`ExecutorService`创建固定线程池并提交任务的用法。在`test1`中,展示了如何利用线程池执行任务并在所有任务完成后关闭线程池。而在`test2`中,利用`CountDownLatch`来阻塞主线程,等待所有子线程执行完毕。两者的应用有助于理解Java并发编程中线程的管理和同步机制。
464

被折叠的 条评论
为什么被折叠?



