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