五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

源碼專欄-ThreadPoolExecutor

2023-03-05 09:44 作者:nickHHH233  | 我要投稿
  1. ctl狀態(tài)為什么要用 移位運算 -1 << COUNT_BITS; ctl這個AtomicInteger類型,是對線程池的運行狀態(tài)和線程池中有效線程的數(shù)量進行控制的一個字段, 它同時包含兩部分的信息:線程池的運行狀態(tài) (runState) 和線程池內(nèi)有效線程的數(shù)量 (workerCount),高3位保存runState,低29位保存workerCount,兩個變量之間互不干擾。用一個變量去存儲兩個值,可避免在做相關(guān)決策時,出現(xiàn)不一致的情況,不必為了維護兩者的一致,而占用鎖資源。通過閱讀線程池源代碼也可以發(fā)現(xiàn),經(jīng)常出現(xiàn)要同時判斷線程池運行狀態(tài)和線程數(shù)量的情況。線程池也提供了若干方法去供用戶獲得線程池當(dāng)前的運行狀態(tài)、線程個數(shù)。這里都使用的是位運算的方式,相比于基本運算,速度也會快很多。

  2. private static int workerCountOf(int c) { return c & CAPACITY; } 直接ctl設(shè)置1、2、3 然后返回變量不行嗎

  3. 如果有異常怎么處理 分情況 如果是submit提交任務(wù)的會被FutureTask吞掉,如果是execute提交的會拋出異常,同時會進行異常work退出處理,先從works移掉當(dāng)前的work,然后創(chuàng)建一個新的works

  4. 數(shù)量怎么統(tǒng)計呢,線程池沒有專門變量去存儲當(dāng)前最大核心數(shù),最大線程數(shù),都是用一個變量ctl來獲取當(dāng)前線程數(shù)

  5. 美團是怎么獲取到當(dāng)前的最大核心線程池數(shù)的?最大線程池數(shù),這個沒意義啊,如果要改變核心線程數(shù),直接通過setCorePoolSize來設(shè)置就好了,這個會比較當(dāng)前線程池數(shù)是否小于剛剛設(shè)置的核心線程數(shù),如果小于for循環(huán)創(chuàng)建work,如果大于則中斷,只是中斷并沒有減少work,美團是怎么實現(xiàn)的??

  6. showdown和showdonwNow有什么區(qū)別 生產(chǎn)上一般使用showdownNow,showdownNow會處理當(dāng)前還在工作隊列的任務(wù),處理完后才關(guān)閉,但showdown不會直接關(guān)閉所有線程,情況工作隊列

  1. 怎么處理空閑線程,調(diào)整狀態(tài),每個線程執(zhí)行時都會再一個死循環(huán)里面遍歷工作隊列,判斷當(dāng)前線程數(shù)是否小于核心線程數(shù),如果小于則表示目前所有的都是核心線程,那么通過阻塞隊列take方法阻塞直到有新的任務(wù),如果大于核心線程數(shù),并且設(shè)置存活時間,通過poll只要從隊列獲取任務(wù)超過這個存活時間還沒有獲取到任務(wù),就會進入processWorkerExit來調(diào)整狀態(tài),減少work數(shù)量,然后判斷當(dāng)前線程數(shù)是否小于核心線程數(shù),如果小于則增加work,如果大于則不管跳過

這篇文章寫的不錯,可以多看看 https://tech.meituan.com/2020/04/02/java-pooling-pratice-in-meituan.html

相關(guān)面試題 https://mp.weixin.qq.com/s/AVtbsVwNH97goImfUDaouw

本文使用 文章同步助手 同步

源碼專欄-ThreadPoolExecutor的評論 (共 條)

分享到微博請遵守國家法律
韶山市| 岳西县| 乌鲁木齐县| 定日县| 岫岩| 琼中| 革吉县| 平定县| 罗田县| 盈江县| 鹿泉市| 临夏县| 高唐县| 玉门市| 新疆| 新竹市| 庐江县| 湘潭市| 凤山市| 南江县| 蕲春县| 延寿县| 云林县| 蒲江县| 峡江县| 清徐县| 兴隆县| 邛崃市| 白玉县| 彰武县| 石渠县| 黄浦区| 丘北县| 昭平县| 新巴尔虎左旗| 黑龙江省| 德格县| 蒲江县| 航空| 明溪县| 会东县|