天天看點

java線程池

  在java線程中我們學習了如何通過實作java.lang.Runnable來定義實作任務類。以及用下邊這樣的語句來常見一個線程。

  Runnable task = new TaskClass(task);

  new Thread(task).start();

  這樣的方法對于單一的任務執行是很友善的,但是由于我們必須對每個人物都建立一個線程當有大量的任務時就不夠高效了。

  線程池是管理并發執行任務個數的理想方法。java提供Executor接口來執行線程池中的任務,提供ExecutorService接口來管理和控制任務。ExecutorService是Executor的子接口。

  《interface》 java.util.concurrent.Executor

    +executor(Runnable object):void      //Executor the runnable task

  《interface》 java.util.concurrent.ExecutorService

    +shutdown() :void         //關閉執行器,但允許完成執行器中的任務。一旦關閉,他就不能接受新任務。

    +shutdownNow() :bList<Runnable>  //即使線程中還有未完成的任務也會直接關閉線程

    +isShutdown()  :boolean   //如果線程已經關閉,則傳回true

    +isTerminated():boolean  //如果線程池中所有的任務已經終止,傳回true

   java.util.concurrent.Executors

    +newFixedThreadPool(numberiofthreads:int):ExecutorService    //建立一個線程池,該線程池可以并發執行的線程數固定。線上程結束目前任務後,可以重用另一個任務

    +newCachedThreadPool():ExecutorService     //建立一個線程池,它可按照需要建立新的線程,但目前邊建立的線程可用的時候重用他們