一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - java 中Executor, ExecutorService 和 Executors 間的不同

java 中Executor, ExecutorService 和 Executors 間的不同

2020-11-11 16:25馬蘇大馬哈魚 Java教程

這篇文章主要介紹了java 中Executor, ExecutorService 和 Executors 間的不同的相關資料,需要的朋友可以參考下

javaExecutor, ExecutorServiceExecutors 間的不同

java.util.concurrent.Executor, java.util.concurrent.ExecutorService, java.util.concurrent. Executors 這三者均是 Java Executor 框架的一部分,用來提供線程池的功能。因為創建和管理線程非常心累,并且操作系統通常對線程數有限制,所以建議使用線程池來并發執行任務,而不是每次請求進來時創建一個線程。使用線程池不僅可以提高應用的響應時間,還可以避免”java.lang.OutOfMemoryError: unable to create new native thread” 之類的錯誤。

在 Java 1.5 時,開發者需要關心線程池的創建和管理,但在 Java 1.5 之后 Executor 框架提供了多種內置的線程池,例如:FixedThreadPool(包含固定數目的線程),CachedThreadPool(可根據需要創建新的線程)等等。

Executor

Executor, ExecutorService, 和 Executors 最主要的區別是 Executor 是一個抽象層面的核心接口(大致代碼如下)。

?
1
2
3
public interface Executor {
 void execute(Runnable command);
}

不同于 java.lang.Thread 類將任務和執行耦合在一起, Executor 將任務本身和執行任務分離,可以閱讀 difference between Thread and Executor 來了解 Thread 和 Executor 間更多的不同。

ExecutorService

ExecutorService 接口 對 Executor 接口進行了擴展,提供了返回 Future 對象,終止,關閉線程池等方法。當調用 shutDown 方法時,線程池會停止接受新的任務,但會完成正在 pending 中的任務。

Future 對象提供了異步執行,這意味著無需等待任務執行的完成,只要提交需要執行的任務,然后在需要時檢查 Future 是否已經有了結果,如果任務已經執行完成,就可以通過 Future.get() 方法獲得執行結果。需要注意的是,Future.get() 方法是一個阻塞式的方法,如果調用時任務還沒有完成,會等待直到任務執行結束。

通過 ExecutorService.submit() 方法返回的 Future 對象,還可以取消任務的執行。Future 提供了 cancel() 方法用來取消執行 pending 中的任務。

ExecutorService 部分代碼如下:

?
1
2
3
4
5
6
public interface ExecutorService extends Executor {
 void shutdown();
 <T> Future<T> submit(Callable<T> task);
 <T> Future<T> submit(Runnable task, T result);
 <T> List<Future<T>> invokeAll(Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit) throws InterruptedException;
}

Executors

Executors 是一個工具類,類似于 Collections。提供工廠方法來創建不同類型的線程池,比如 FixedThreadPool 或 CachedThreadPool。

Executors 部分代碼:

?
1
2
3
4
5
6
7
8
9
public class Executors {
 public static ExecutorService newFixedThreadPool(int nThreads) {
  return new ThreadPoolExecutor(nThreads, nThreads, 0L, TimeUnit.MILLISECONDS,new LinkedBlockingQueue<Runnable>());
  }
   
  public static ExecutorService newCachedThreadPool() {
  return new ThreadPoolExecutor(0, Integer.MAX_VALUE, 60L, TimeUnit.SECONDS, new SynchronousQueue<Runnable>());
  }
}

下面詳細看一下三者的區別:

Executor vs ExecutorService vs Executors

正如上面所說,這三者均是 Executor 框架中的一部分。Java 開發者很有必要學習和理解他們,以便更高效的使用 Java 提供的不同類型的線程池。總結一下這三者間的區別,以便大家更好的理解:

·         Executor 和 ExecutorService 這兩個接口主要的區別是:ExecutorService 接口繼承了 Executor 接口,是 Executor 的子接口

·         Executor 和 ExecutorService 第二個區別是:Executor 接口定義了 execute()方法用來接收一個Runnable接口的對象,而 ExecutorService 接口中的 submit()方法可以接受Runnable和Callable接口的對象。

·         Executor 和 ExecutorService 接口第三個區別是 Executor 中的 execute() 方法不返回任何結果,而 ExecutorService 中的 submit()方法可以通過一個 Future 對象返回運算結果。

·         Executor 和 ExecutorService 接口第四個區別是除了允許客戶端提交一個任務,ExecutorService 還提供用來控制線程池的方法。比如:調用 shutDown() 方法終止線程池。可以通過 《Java Concurrency in Practice》 一書了解更多關于關閉線程池和如何處理 pending 的任務的知識。

·         Executors 類提供工廠方法用來創建不同類型的線程池。比如: newSingleThreadExecutor() 創建一個只有一個線程的線程池,newFixedThreadPool(int numOfThreads)來創建固定線程數的線程池,newCachedThreadPool()可以根據需要創建新的線程,但如果已有線程是空閑的會重用已有線程。

總結

下表列出了 Executor 和 ExecutorService 的區別:

java 中Executor, ExecutorService 和 Executors 間的不同

 

微信公眾號搜索 “ 服務器之家 ” ,選擇關注

程序猿的那些事、送書等活動等著你

原文鏈接:https://my.oschina.net/u/3515868/blog/915546

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: yellow视频在线观看免费 | 大乳孕妇一级毛片 | 女子张腿让男人桶免费 | 国产在线精品观看 | 欧美四虎影院 | 亚洲福利精品电影在线观看 | 成人福利免费视频 | 天天摸天天碰色综合网 | 操美女bb| 精精国产www视频在线观看免费 | 国产精品久久免费 | 欧美一级高清片免费一级 | 亚洲免费色图 | 久久全国免费观看视频 | bt天堂在线最新版www | 亚洲邪恶天堂影院在线观看 | 久久性综合亚洲精品电影网 | 久久黄色精品视频 | 亚洲小视频网站 | 楚乔传第二部全60集免费观看 | 视频久久 | 成人福利在线观看 | 无人在线高清免费看 | 草莓香蕉榴莲丝瓜秋葵绿巨人在线看 | a级精品九九九大片免费看 a级动漫 | 波多野结衣 在线播放 | 亚洲欧美在线观看首页 | a∨在线观看 | 暖暖暖免费观看在线观看 | 大逼美女| 亚洲 欧美 偷自乱 图片 | 国产精品日韩欧美一区二区 | 农夫69小说小雨与农村老太 | 成人150p | 国产香蕉一区二区在线观看 | chinese真实incest| 亚洲天堂视频在线观看 | 2020年精品国产午夜福利在线 | 调教处男 | 闺蜜高h | 动漫美女日批 |