Java創(chuàng)建線程中相關(guān)線程的編寫方式
Java創(chuàng)建線程一直在不斷的進(jìn)行相關(guān)問題的解決,當(dāng)然我們一直在不斷的使用中會(huì)有不少的問題出現(xiàn)。下面我們就先看看如何才能更好的進(jìn)行相關(guān)問題解決。在上例的基礎(chǔ)上改一行創(chuàng)建pool對(duì)象的代碼為:
創(chuàng)建一個(gè)使用單個(gè) worker 線程的 Executor,以無界隊(duì)列方式來運(yùn)行該線程。
- ExecutorService pool = Executors.newSingleThreadExecutor();
創(chuàng)建一個(gè)使用單個(gè) worker 線程的 Executor,以無界隊(duì)列方式來運(yùn)行該線程。
- ExecutorService pool = Executors.newSingleThreadExecutor();
輸出結(jié)果為:
- pool-1-thread-1正在執(zhí)行。。。
- pool-1-thread-1正在執(zhí)行。。。
- pool-1-thread-1正在執(zhí)行。。。
- pool-1-thread-1正在執(zhí)行。。。
- pool-1-thread-1正在執(zhí)行。。。
- Process finished with exit code 0
- pool-1-thread-1正在執(zhí)行。。。
- pool-1-thread-1正在執(zhí)行。。。
- pool-1-thread-1正在執(zhí)行。。。
- pool-1-thread-1正在執(zhí)行。。。
- pool-1-thread-1正在執(zhí)行。。。
- Process finished with exit code 0
對(duì)于以上兩種連接池,大小都是固定的,當(dāng)要加入的池的線程(或者任務(wù))超過池最大尺寸時(shí)候,則入此線程池需要排隊(duì)等待。
一旦池中有線程完畢,則排隊(duì)等待的某個(gè)線程會(huì)入池執(zhí)行。
可變尺寸的線程池
與上面的類似,只是改動(dòng)下pool的創(chuàng)建方式:
創(chuàng)建一個(gè)可根據(jù)需要?jiǎng)?chuàng)建新線程的線程池,但是在以前構(gòu)造的線程可用時(shí)將重用它們。
- ExecutorService pool = Executors.newCachedThreadPool();
創(chuàng)建一個(gè)可根據(jù)需要?jiǎng)?chuàng)建新線程的線程池,但是在以前構(gòu)造的線程可用時(shí)將重用它們。
- ExecutorService pool = Executors.newCachedThreadPool();
Java創(chuàng)建線程代碼
- pool-1-thread-5正在執(zhí)行。。。
- pool-1-thread-1正在執(zhí)行。。。
- pool-1-thread-4正在執(zhí)行。。。
- pool-1-thread-3正在執(zhí)行。。。
- pool-1-thread-2正在執(zhí)行。。。
- Process finished with exit code 0
以上就是對(duì)Java創(chuàng)建線程的詳細(xì)代碼介紹。
【編輯推薦】