亚洲国产日韩欧美在线a乱码,国产精品路线1路线2路线,亚洲视频一区,精品国产自,www狠狠,国产情侣激情在线视频免费看,亚洲成年网站在线观看

java線程池框架是什么

時間:2025-07-18 11:06:15 java語言

java線程池框架是什么

  多線程是程序員面試時常常會面對的問題,對多線程概念的掌握和理解水平,也常常被用來衡量一個人的編程實力。不錯,普通的多線程已經(jīng)不容易了。以下是小編為大家搜索整理java線程池框架是什么,希望能給大家?guī)韼椭?更多精彩內(nèi)容請及時關(guān)注我們應(yīng)屆畢業(yè)生考試網(wǎng)!

  一、線程池結(jié)構(gòu)圖

  二、示例

  定義線程接口

  6public class MyThread extends Thread {@Overridepublicvoid run() {System.out.println(Thread.currentThread().getName() + "正在執(zhí)行");}}

  1:newSingleThreadExecutor

  10ExecutorService pool = Executors. newSingleThreadExecutor();Thread t1 = new MyThread();Thread t2 = new MyThread();Thread t3 = new MyThread();/pic/pic/p>

  輸入結(jié)果:

  3pool-1-thread-1正在執(zhí)行pool-1-thread-1正在執(zhí)行pool-1-thread-1正在執(zhí)行

  2:newFixedThreadPool

  13ExecutorService pool = Executors.newFixedThreadPool(3);Thread t1 = new MyThread();Thread t2 = new MyThread();Thread t3 = new MyThread();Thread t4 = new MyThread();Thread t5 = new MyThread();/pic/p>

  輸入結(jié)果:

  4pool-1-thread-1正在執(zhí)行pool-1-thread-2正在執(zhí)行pool-1-thread-1正在執(zhí)行pool-1-thread-2正在執(zhí)行

  3 :newCachedThreadPool

  14ExecutorService pool = Executors.newCachedThreadPool();Thread t1 = new MyThread();Thread t2 = new MyThread();Thread t3 = new MyThread();Thread t4 = new MyThread();Thread t5 = new MyThread();/pic/pic/p>

  輸入結(jié)果:

  5pool-1-thread-2正在執(zhí)行pool-1-thread-4正在執(zhí)行pool-1-thread-3正在執(zhí)行pool-1-thread-1正在執(zhí)行pool-1-thread-5正在執(zhí)行

  4 :ScheduledThreadPoolExecutor

  14ScheduledExecutorService pool = Executors.newScheduledThreadPool(2);pool.scheduleAtFixedRate(new Runnable() {/pic/pic/pic/p>

  輸入結(jié)果:

  4================+++++++++++++++++++++++++++++++++++++++++++++++++++

  三、線程池核心參數(shù)

  corePoolSize : 池中核心的線程數(shù)

  maximumPoolSize : 池中允許的最大線程數(shù)。

  keepAliveTime : 當線程數(shù)大于核心時,此為終止前多余的空閑線程等待新任務(wù)的最長時間。

  unit : keepAliveTime 參數(shù)的時間單位。

  workQueue : 執(zhí)行前用于保持任務(wù)的隊列。此隊列僅保持由 execute方法提交的 Runnable任務(wù)。

  threadFactory : 執(zhí)行程序創(chuàng)建新線程時使用的工廠。

  handler : 由于超出線程范圍和隊列容量而使執(zhí)行被阻塞時所使用的處理程序。

  ThreadPoolExecutor :Executors類的底層實現(xiàn)。

  3.1 任務(wù)排隊機制

  SynchonousQueue: 同步隊列,隊列直接提交給線程執(zhí)行而不保持它們,此時線程池通常是無界的

  LinkedBlockingQueue: 無界對列,當線程池線程數(shù)達到最大數(shù)量時,新任務(wù)就會在隊列中等待執(zhí)行,可能會造成隊列無限膨脹

  ArrayBlockingQueue : 有界隊列,有助于防止資源耗盡,一旦達到上限,可能會造成新任務(wù)丟失

  注意:

  newSingleThreadExecutor、newFixedThreadPool使用的是LinkedBlockingQueue

  newCachedThreadPool 使用的是 SynchonousQueue

  newScheduledThreadPool使用的是 DelayedWorkQueue

  3.2 線程執(zhí)行流程

  3.3 線程大小確定:

  cpu密集型: 盡量少開線程,最佳線程數(shù) Ncpu+1

  io密集型:多開線程,2Ncpu

  混合型:根據(jù)情況而定,可以拆分成io密集和cou密集

【java線程池框架是什么】相關(guān)文章:

java線程池框架解析03-07

什么是java線程池框架03-12

java線程池框架解析方法10-04

Java 5線程池使用11-21

java中通用的線程池實例代碼12-18

java主線程是什么11-28

java多線程10-24

java的多線程11-04

Java多線程的線程守護例子01-11