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