可以以 new Thread( () -> { 線程執(zhí)行的任務(wù) }).start(); 這種形式開啟一個(gè)線程. 當(dāng)run()方法運(yùn)行結(jié)束,線程對(duì)象會(huì)被GC釋放。
在真實(shí)的生產(chǎn)環(huán)境中,可能需要很多線程來支撐整個(gè)應(yīng)用,當(dāng)線程數(shù)量非常多時(shí) ,反而會(huì)耗盡CPU資源. 如果不對(duì)線程進(jìn)行控制與管理,反而會(huì)影響程序的性能. 線程開銷主要包括: 創(chuàng)建與啟動(dòng)線程的開銷; 線程銷毀開銷; 線程調(diào)度的開銷; 線程數(shù)量受限CPU處理器數(shù)量。
線程池就是有效使用線程的一種常用方式. 線程池內(nèi)部可以預(yù)先創(chuàng)建一定數(shù)量的工作線程,客戶端代碼直接將任務(wù)作為一個(gè)對(duì)象提交給線程池, 線程池將這些任務(wù)緩存在工作隊(duì)列中, 線程池中的工作線程不斷地從隊(duì)列中取出任務(wù)并執(zhí)行。