线程池和线程详细教程
生活随笔
收集整理的這篇文章主要介紹了
线程池和线程详细教程
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1. 線程池的概念:
? ? ? ? ? 線程池就是首先創(chuàng)建一些線程,它們的集合稱為線程池。使用線程池可以很好地提高性能,線程池在系統(tǒng)啟動時即創(chuàng)建大量空閑的線程,程序?qū)⒁粋€任務(wù)傳給線程池,線程池就會啟動一條線程來執(zhí)行這個任務(wù),執(zhí)行結(jié)束以后,該線程并不會死亡,而是再次返回線程池中成為空閑狀態(tài),等待執(zhí)行下一個任務(wù)。
2. 線程池的工作機制
? ? ? ? ?2.1 在線程池的編程模式下,任務(wù)是提交給整個線程池,而不是直接提交給某個線程,線程池在拿到任務(wù)后,就在內(nèi)部尋找是否有空閑的線程,如果有,則將任務(wù)交給某個空閑的線程。
? ? ? ? ?2.1 一個線程同時只能執(zhí)行一個任務(wù),但可以同時向一個線程池提交多個任務(wù)。
3. 使用線程池的原因:
? ? ? ? 多線程運行時間,系統(tǒng)不斷的啟動和關(guān)閉新線程,成本非常高,會過渡消耗系統(tǒng)資源,以及過渡切換線程的危險,從而可能導致系統(tǒng)資源的崩潰。這時,線程池就是最好的選擇了。
?
一:使用線程的方式去執(zhí)行程序
可以看到用時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);}?
?
?
二:使用線程池的方式去執(zhí)行程序
可以看到用時43毫秒,是很快的
?
?
?
總結(jié)
以上是生活随笔為你收集整理的线程池和线程详细教程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ACM-ICPC 2018 焦作赛区网络
- 下一篇: dnf mysql密码多少_CentOS