python 等待其他线程执行完_面试官:如何让线程顺序执行,join,还有其他办法吗?...
面試官:如讓線(xiàn)程順序執(zhí)行?
我:使用Thread的join方法。
面試官:除了join還有別的辦法嗎?
我:目前只用過(guò)join。
面試官:哦,那你了解CountDownLatch嗎?
我:不了解,沒(méi)使用過(guò)。
面試中被問(wèn)到線(xiàn)程順序執(zhí)行,相信大家都能答出來(lái)join,但是除了join還有其他的辦法,不知道大家了解不。我這里分享下3種方式。
第一種:join
join方式
第二種:線(xiàn)程池
通過(guò)Executors.newSingleThreadExecutor()來(lái)實(shí)現(xiàn)(這里可以看我的《面試官問(wèn)你java都有哪些線(xiàn)程池,自己是否自定義過(guò)線(xiàn)程池》)
線(xiàn)程池
第三種:通過(guò)CountDownLatch實(shí)現(xiàn)
CountDownLatch
這3種方式哪種比較好,我個(gè)人認(rèn)為還是CountDownLatch,因?yàn)樗牧6雀?xì),比如我上面的例子,t2線(xiàn)程執(zhí)行一半,t3線(xiàn)程就可以執(zhí)行,通過(guò)join和線(xiàn)程池都實(shí)現(xiàn)不了。而通過(guò)CountDownLatch可以實(shí)現(xiàn),如圖:
CountDownLatch細(xì)粒度
總結(jié):
選擇使用什么樣的方式,取決于你的需求,如果你只是想順序的執(zhí)行那join和線(xiàn)程池都可以使用,因?yàn)檫@2種方式比較簡(jiǎn)單。如果需求是細(xì)粒度的,比如線(xiàn)程1執(zhí)行到某個(gè)部分,線(xiàn)程2就得執(zhí)行,就使用CountDownLatch。但是使用它時(shí),一定要理清邏輯,不然可能await方法會(huì)阻塞。
總結(jié)
以上是生活随笔為你收集整理的python 等待其他线程执行完_面试官:如何让线程顺序执行,join,还有其他办法吗?...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 三星sd卡无法删除数据_单反相机里的SD
- 下一篇: python小甲鱼练习题答案_小甲鱼Py