计划线程池和单线程执行器之间的区别。
序列号 | 要点 | 计划的线程池 | 单线程执行器 |
---|---|---|---|
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"); } }
广告