當前位置:編程學習大全網 - 源碼下載 - 線程池的七個參數意義

線程池的七個參數意義

int corePoolSize

保留在池中的線程數,哪怕它們是空閑的,除非設置了allowCoreThreadTimeOut

int maximumPoolSize

池中的最大線程數。

long keepAliveTime

當線程的數量大於corePoolSize,這是多余空閑線程的最大存活時間,當空間時間達到keepAliveTime值時,多余的線程會被銷毀並等待新任務。

TimeUnit unit

為keepAliveTime參數設置的時間單位

BlockingQueue workQueue

在任務執行之前用於保存任務的隊列。這個隊列將只保存由execute方法提交的Runnable任務。當池中的工作線程數大於corePoolSize時,這時新進來的任務會被放到該隊列中。

ThreadFactory threadFactory

使用自定義的線程工廠來創建線程,壹般用jdk自帶的Executors.defaultThreadFactory()即可,或者guava庫的ThreadFactoryBuilder。

RejectedExecutionHandler handler

當沒有空閑線程並且線程數已經等於maxnumPoolSize時,如何拒絕新的任務請求。

jdk實現的RejectedExecutionHandler有:

AbortPolicy,總是拋出RejectedExecutionException,默認就是AbortPolicy。

CallerRunsPolicy,如果線程池沒有關閉,在調用者的線程中執行任務。如果線程池已經關閉,那麽直接被丟棄任務。

DiscardOldestPolicy,如果線程池沒有關閉,那麽丟棄隊列中最老的任務,並執行新任務。如果線程池已經關閉,那麽直接被丟棄任務。

DiscardPolicy,什麽都不做,直接丟棄任務。

  • 上一篇:我愛妳表白語錄句子
  • 下一篇:共軛亞油酸作為功能性食品配料的作用
  • copyright 2024編程學習大全網