計劃執行緒池和單執行緒執行器之間的區別。
序列號 | 要點 | 計劃的執行緒池 | 單執行緒執行器 |
---|---|---|---|
1 | 基礎 | 建立一個執行緒池,可安排命令在給定的延遲後執行或週期性執行. | 保證順序執行任務,並且任何給定時間都不會有一個以上任務處於活動狀態 |
2 | 佇列 | 它使用延遲佇列來儲存任務。根據時間延遲計劃任務。 | 它使用阻塞佇列。 |
3 | 執行緒生存期 | 即使在保持池中,保持的執行緒數,即使它們處於空閒狀態 | 由於任務而遭到殺死時重新建立執行緒。 |
4. | 執行緒池大小 | 它始終具有單執行緒執行。 | 執行緒池可以從零執行緒增長到 Integer.MAX_VALUE |
5. | 用例 | 我們應在希望限制併發任務時使用固定執行緒池 | 當需要確保任務 1 始終在任務 2 之前執行時,可以使用此型別的池。 |
計劃執行緒池的示例
public class ScheduledThreadPoolExample { public static void main(String args[]) { ScheduledExecutorService services = Executors.newScheduledThreadPool(10); services.schedule(new Task(), 10, TimeUnit.SECONDS); services.scheduleAtFixedRate(new Task(), 15, 10, TimeUnit.SECONDS); //(new Thread(new Main())).start(); } } public class Task implements Runnable { @Override public void run() { System.out.println("In Run"); } }
單執行緒執行器的示例
public class Main { public static void main(String args[]) { ExecutorService services = Executors.newSingleThreadExecutor(); Future<?> future = services.submit(new Task()); } } public class Task implements Runnable { @Override public void run() { System.out.println("In Run"); } }
廣告