多线程-java CountDownLatch

135 阅读1分钟

作用

控制线程执行顺序。比如,我让子线程先执行,完成之后,才执行主线程。

自己实现

自己可以实现一个计数器,线程计数器。就是每个线程执行完成的时候,就减1。直到为0,子线程都执行完毕,然后就开始执行主线程。

jdk-并发包

提供了CountDownLatch,作用和上面的一样。无非是jdk实现的东西,更好,更好用(你只需要调用方法,不需要实现细节)和更安全。因为毕竟是全世界的人在使用。

代码

伪代码

子线程(){
    业务;
    CountDownLatch-1; //每次减1,直到为0。如果为0,就唤醒主线程。
}

CountDownLatch.wait(); //主线程阻塞,等待被唤醒

真实代码

参考

https://mp.weixin.qq.com/s?src=11&timestamp=1575210458&ver=2008&signature=TK0FrvLBDMYYpJCfVsPioJAQu*QWM8zm9HWiPYAQCdKnbwcGkqLaEGH4oUYZV-RRENZjyAPX6WAF71jWv9mHRFbHjPK*whZAsIQdRvNNbI5g5w61Bs9j02aJ-steZ9TH&new=1

mp.weixin.qq.com/s/EFsK3yOtb…?