Java中的線程池有以下幾種:
1.FixedThreadPool:固定大小的線程池,創(chuàng)建時需要指定線程池的大小,當線程池中的線程都在執(zhí)行任務時,新的任務需要等待。
2.CachedThreadPool:可緩存的線程池,可以無限擴大線程池的大小,當線程池中的線程空閑一定時間后,會被回收,當有新的任務需要執(zhí)行時,又會重新創(chuàng)建一個新的線程。
3.SingleThreadPool:只有一個線程的線程池,所有任務按照指定順序在該線程中執(zhí)行,如果該線程異常結束,會重新創(chuàng)建一個新的線程繼續(xù)執(zhí)行任務,保證任務的順序性。
4.ScheduledThreadPool:定時執(zhí)行任務的線程池,支持延遲執(zhí)行和定時執(zhí)行兩種任務,可以用于定時任務、定時檢查等場景。
5.WorkStealingPool:工作竊取線程池,該線程池默認創(chuàng)建的線程數(shù)是 CPU 核心數(shù),線程使用雙端隊列,當一個線程執(zhí)行完自己的任務后,會從其他線程的隊列中竊取任務來執(zhí)行,保證任務的平衡性和執(zhí)行效率。