《Java多線程的控制》

來源:互聯網
上載者:User

 

多線程,是很多編程人員再熟悉不過的了。

在稍老一些的Java版本中,具體是在Java 5.0以前,啟動一個任務是通過調用Thread類的start()方法來實現的,任務的提交和執行時同時進行的,如果想對任務的執行進行調度,或者想控制同時執行的線程數量就需要額外編寫代碼來完成。而在Java 5.0裡提供了一個新的任務執行架構使我們可以很輕鬆地調度和控制任務的執行。這個架構主要有三個介面和其相應的類組成。這三個介面分別是:

Executor、

ExevutirService

ScheduledExecutorService

下面我們來具體說明。

Executor介面:是用來執行Runnable任務的,它值定義了一個方法:

  execute(Runnable command):執行Ruannable類型的任務.

ExecutorService介面:ExecutorService繼承了Executor的方法,並提供了執行Callable任務和中指任務執行的服務,其定義的方法主要有:

  submit(task):可用來提交Callable或Runnable任務,並返回代表此任務的Future對象

  invokeAll(collection of tasks):批處理任務集合,並返回一個代表這些任務的Future對象集合

  shutdown():在完成已提交的任務後關閉服務,不再接受新任務

  shutdownNow():停止所有正在執行的任務並關閉服務。

  isTerminated():測試是否所有任務都執行完畢了。

  isShutdown():測試是否該ExecutorService已被關閉

ScheduledExecutorService介面:

在ExecutorService的基礎上,ScheduledExecutorService提供了按時間安排執行任務的功能,它提供的方法主要有:

  schedule(task,
initDelay): 安排所提交的Callable或Runnable任務在initDelay指定的時間後執行

  scheduleAtFixedRate():安排所提交的Runnable任務按指定的間隔重複執行

  scheduleWithFixedDelay():安排所提交的Runnable任務在每次執行完後,等待delay所指定的時間後重複執行

_________________________________________________________________________________________________________________________________

雖然以上提到的介面有其實作類別,但是為了方便,我們建議使用Executors的工具類來得到Executor介面的具體對象,需要注意的是,Executors是一個類,不是Executor的複數形式,Executor提供了一下一些靜態方法:

callable(Runnable task):將一個Runnable的任務轉化成callable的任務

newSingleThreadExecutor:
產生一個ExecutorService對象,這個對象只有一個線程可用來執行任務,若任務多於一個,任務將按先後順序執行

newCachedThreadPool():
產生一個ExecutorService對象,這個對象帶有一個線程池,線程池的大小會根據需要調整,線程執行完任務後返回線程池,供執行下一次任務使用。

newFixedThreadPool(int
poolSize):產生一個ExecutorService對象,這個對象帶有一個大小為poolSize的線程池,若任務數量大於poolSize,任務會被放在一個queue裡順序執行

newSingleThreadScheduledExecutor:產生一個ScheduledExecutorService對象,這個對象的線程池大小為1,若任務多於一個,任務將按先後順序執行

newScheduledThreadPool(int
poolSize): 產生一個ScheduledExecutorService對象,這個對象的線程池大小為poolSize,若任務數量大於poolSize,任務會在一個queue裡等待執行

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.