學習筆記,僅供自己參考,如有不對歡迎指正
1.線程的幾種狀態(tài)
-
創(chuàng)建狀態(tài)
線程被創(chuàng)建,還沒有執(zhí)行start方法 -
可運行狀態(tài)
被其他線程(比如main)調用start方法,此時線程隨時可以被CPU調度執(zhí)行 -
運行狀態(tài)
線程獲取CPU權限執(zhí)行。warning:線程只能從就緒狀態(tài)進入到運行狀態(tài)。 -
阻塞狀態(tài)
因為某種原因放棄CPU的使用權,暫停運行。直到再次進入可運行狀態(tài),才能被執(zhí)行。一般分為三種情況:
1.等待阻塞 通過調用線程的wait()
方法,讓線程等待某工作的完成。
2.同步阻塞 線程在獲取synchronized
同步鎖失敗(因為鎖被其他線程占用),它會進入同步阻塞狀態(tài)。
3.其他阻塞 通過調用線程的sleep()或join()或發(fā)出了I/O請求時
,線程會進入到阻塞狀態(tài)。當sleep()狀態(tài)超時、join()等待線程終止或超時、或者I/O處理完畢時,線程重新轉入就緒狀態(tài)。 -
死亡狀態(tài)
線程run()、main()
方法執(zhí)行結束,或者因異常退出了run()方法
,則該線程結束生命周期。死亡的線程不可再次復生
2.線程池知識點
-
7個參數(shù)
參考 https://www.cnblogs.com/alex-xyl/p/12460679.html
1)corePollSize: 核心線程數(shù)。
2)maximumPoolSize: 最大線程數(shù)。
3)keepAliveTime 空閑線程存活時間
4)unit 空間線程存活時間單位
5)workQueue 工作隊列
6)threadFactory 線程工廠
7)handler 拒絕策略 -
實現(xiàn)線程池中的任務按優(yōu)先級執(zhí)行
參考 https://www.cnblogs.com/Sinte-Beuve/p/12340634.html
替換線程池默認的阻塞隊列為 PriorityBlockingQueue(優(yōu)先級隊列) -
線程池的設計用到了哪種設計思想
生產(chǎn)消費者模型 -
你是如何配置線程池的?核心線程數(shù)你一般是怎么配置的?
參考 https://www.cnblogs.com/gaopengpy/p/11989249.html
根據(jù)IO密集型和CPU密集型來配置