1. 線程池的概念:
? ? ? ? ? 線程池就是首先創建一些線程,它們的集合稱為線程池。使用線程池可以很好地提高性能,線程池在系統啟動時即創建大量空閑的線程,程序將一個任務傳給線程池,線程池就會啟動一條線程來執行這個任務,執行結束以后,該線程并不會死亡,而是再次返回線程池中成為空閑狀態,等待執行下一個任務。
2. 線程池的工作機制
? ? ? ? ?2.1 在線程池的編程模式下,任務是提交給整個線程池,而不是直接提交給某個線程,線程池在拿到任務后,就在內部尋找是否有空閑的線程,如果有,則將任務交給某個空閑的線程。
? ? ? ? ?2.1 一個線程同時只能執行一個任務,但可以同時向一個線程池提交多個任務。
3. 使用線程池的原因:
? ? ? ? 多線程運行時間,系統不斷的啟動和關閉新線程,成本非常高,會過渡消耗系統資源,以及過渡切換線程的危險,從而可能導致系統資源的崩潰。這時,線程池就是最好的選擇了。
?
一:使用線程的方式去執行程序
可以看到用時11964毫秒
public static void main(String[] args) throws InterruptedException {Long start = System.currentTimeMillis();final Random random = new Random();final List<Integer> list = new ArrayList<>();for (int i = 0; i < 100000; i++) {Thread thread = new Thread() {@Overridepublic void run() {list.add(random.nextInt());}};thread.start();thread.join();}System.out.println(System.currentTimeMillis() - start);}
?
?
?
二:使用線程池的方式去執行程序
可以看到用時43毫秒,是很快的
?
?
?