且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

Groovy里使用CountDownLatch

更新时间:2022-08-28 07:57:24

Groovy里使用CountDownLatch

CountDownLatch是java.util.concurrent包里的一个同步工具类。


CountDownLatch的构造函数,接收一个类型为整型的参数,代表CountDownLatch所在的线程,在执行await方法后能够返回,所需要在其他线程内调用其countDown方法的次数。

Groovy里使用CountDownLatch 

测试代码和打印输出:

Groovy里使用CountDownLatch 

timer.schedule新启动了一个线程,在新线程里调用countDown,而主线程执行await进入阻塞状态,待新线程调用一次countDown之后,主线程立即从await方法的阻塞状态中返回。

package jerry;

import java.util.concurrent.CountDownLatch
import java.util.concurrent.TimeUnit

CountDownLatch called = new CountDownLatch(1)
println "main thread id: " + Thread.currentThread().getId();

Timer timer = new Timer()
timer.schedule(new TimerTask() {
    void run() {
        println "call countDown in another thread: " + Thread.currentThread().getId();
        called.countDown()
    }
}, 220)

println "before calling called.await in main thread: " + Thread.currentThread().getId();
called.await(10, TimeUnit.SECONDS)
println "after calling called.await in main thread: " + Thread.currentThread().getId();