java中的線程池

線程池的作用:

  • 降低資源消耗速度;重複利用已創建的線程降低線程創建和銷燬造成的消耗。
  • 提高響應速度;任務不需要等待線程創建就能立即執行;
  • 提高線程的可管理性;

線程池實現原理:

  1. 線程池判斷核心線程池裏的線程是否都在執行任務。如果不是,則創建一個新的工作線程來執行任務。如果核心線程池裏的線程都在執行任務,則進入下個流程;
  2. 線程池判斷工作隊列是否滿。如果工作隊列沒有滿,則將新提交的任務存儲在這個工作隊列裏。如果滿,則進入下個流程;
  3. 線程池判斷線程池的線程是否都處於工作狀態。如果沒有,則創建一個新的工作線程來執行任務。如果滿了,則交給飽和策略來執行這個任務;

源碼:

public void execute(Runnable command) {
    if (command == null)
        throw new NullPointerException();
    if (poolSize >= corePoolSize || !addIfUnderCorePoolSize(command)) {
        if (runState == RUNNING && workQueue.offer(command)) {
            if (runState != RUNNING || poolSize == 0)
                ensureQueuedTaskHandled(command);
        }
        else if (!addIfUnderMaximumPoolSize(command))
            reject(command); // is shutdown or saturated
    }
}

借鑑於:http://www.cnblogs.com/dolphin0520/p/3932921.html




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章