LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

循環(huán)中使用 Thread.sleep,代碼評審被老板噴了。。

admin
2025年7月22日 21:36 本文熱度 454

有一次我是在辦公室快下班那會兒,本來想著趕緊把任務(wù)跑完就溜,結(jié)果代碼評審的時候被老板直接點名噴了……就因為我在一個 for 循環(huán)里用了 Thread.sleep(1000),還挺自信地說“這能穩(wěn)定節(jié)奏”。

他就問我,你為啥要這么寫?我說調(diào)接口頻率太高,想降降速,怕被限流。然后他嘆了口氣說,你知道你這是在干嘛嗎?你是讓主線程去睡覺,每個循環(huán)都等一秒,這整個服務(wù)都卡在那了你知道不?如果你這段代碼跑在高并發(fā)場景,那不就全堆那了嘛。

Thread.sleep 在循環(huán)里,到底有多坑?

先隨手寫段代碼,你看個意思:

for (String item : items) {
    process(item);
    Thread.sleep(1000); // 等一秒
}

看起來沒啥毛病對吧?邏輯是對的,也確實能每處理一個元素等一秒。可你要真拿這個跑個大列表,甚至你這一段代碼跑在服務(wù)主線程上,那這個“等”可就是致命的慢。

**問題是它會阻塞整個線程。**你等著的時候,啥事兒都干不了。線程就像被摁住了腦袋一樣,只能干等。而且這不是異步,不是定時任務(wù),也不是限流機制,它就是“睡覺”。

那我應(yīng)該怎么寫?

老板說,得看你目的到底是啥。如果你是為了限流,那就用限流工具,比如 Guava 的 RateLimiter,或者 Spring Cloud 的 Sentinel。如果你是為了錯峰訪問,那應(yīng)該考慮定時任務(wù),或者批處理。

比如用 RateLimiter 控個節(jié)奏:

RateLimiter limiter = RateLimiter.create(1.0); // 每秒1個許可

for (String item : items) {
    limiter.acquire(); // 阻塞直到拿到許可
    process(item);
}

這個寫法,才是真的“控制頻率”,而不是“強行睡覺”。

那些年我們錯用過的 sleep

我回想了下,除了循環(huán),還有人寫定時任務(wù)用 sleep:

while (true) {
    doSomething();
    Thread.sleep(10000);
}

這種用法也挺常見的。其實你如果只是想每10秒執(zhí)行一次任務(wù),為啥不用 ScheduledExecutorService

ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
scheduler.scheduleAtFixedRate(() -> {
    doSomething();
}, 010, TimeUnit.SECONDS);

這才是正道。而且這玩意線程池可控,還能設(shè)定任務(wù)失敗之后的處理策略,比你那死循環(huán)睡覺靠譜多了。

后來老板讓我回去查了一圈資料,還特意點了我們以前某次接口響應(yīng)慢的問題日志,讓我看看是不是我寫的那段循環(huán)在 sleep,然后線程池爆了……

真的是血的教訓(xùn)。我自己平時測試代碼用 sleep 啥的沒在意,可一上線環(huán)境不一樣,線程池資源寶貴,一下堆滿就宕機。

有時候?qū)懘a圖省事,腦子里第一反應(yīng)就是“我等等好了”,于是就加個 Thread.sleep。可你得想清楚:你等的是誰?在哪等?別人等得起嗎?如果你等的是主線程,或者高并發(fā)下的處理邏輯,那你這“一秒”很可能就是災(zāi)難。

現(xiàn)在我只要看到有同事寫循環(huán) + sleep,我就條件反射說一句:“你是想卡主線程嗎?”大家聽多了也就長記性了。

-END-


閱讀原文:原文鏈接


該文章在 2025/7/23 12:09:06 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點晴ERP是一款針對中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點晴PMS碼頭管理系統(tǒng)主要針對港口碼頭集裝箱與散貨日常運作、調(diào)度、堆場、車隊、財務(wù)費用、相關(guān)報表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點,圍繞調(diào)度、堆場作業(yè)而開發(fā)的。集技術(shù)的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點晴WMS倉儲管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務(wù)都免費,不限功能、不限時間、不限用戶的免費OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

黄频国产免费高清视频,久久不卡精品中文字幕一区,激情五月天AV电影在线观看,欧美国产韩国日本一区二区
一区二区三区亚洲综合 | 欧美亚洲中文精品三区 | 伊人色综合久久天天人手人婷 | 亚洲人网在线播放视频 | 在线中文字幕永久在线 | 日韩不卡一区二区三区 |