调度线程池ScheduledThreadPool使用示例

来源:互联网 发布:红警3 for mac版 编辑:程序博客网 时间:2024/06/07 19:56
package com.expgiga.JUC;import java.util.Random;import java.util.concurrent.*;/** * 一、线程池:提供了一个线程队列,队列中保存着所有等待状态的线程。避免了创建与销毁额外的开销,提高了响应速度。 * 二、线程池的体系结构: *    java.util.concurrent.Executor:负责线程的使用与调度的根接口 *       |-- ExecutorService 子接口:线程池的主要接口 *          |-- ThreadPoolExecutor 线程池的实现类 *          |-- ScheduledExecutorService 子接口:负责线程的调度 *             |--ScheduledThreadPoolExecutor:继承了ThreadPoolExecutor实现了ScheduledExecutorService * <p> * 三、工具类:Executors * ExecutorService newFixedThreadPool():创新固定大小的线程池、 * ExecutorService newCacheThreadPool():缓存线程池,线程池的数量不固定,可以根据需求自动的而更改数量。 * ExecutorService newSingleThreadExecutor():创建单个线程池,线程池中只有一个线程 * <p> * ScheduledExecutorService newScheduledThreadPool():创建固定大小的线程,可以延迟或定时执行任务。 */public class TestScheduledThreadPool {    public static void main(String[] args) throws ExecutionException, InterruptedException {        ScheduledExecutorService pool = Executors.newScheduledThreadPool(5);        for (int i = 0; i < 5; i++) {            Future<Integer> result = pool.schedule(new Callable<Integer>() {                @Override                public Integer call() throws Exception {                    int num = new Random().nextInt(100);//生成随机数                    System.out.println(Thread.currentThread().getName() + " : " + num);                    return num;                }            }, 3, TimeUnit.SECONDS);            System.out.println(result.get());        }        pool.shutdown();    }}
原创粉丝点击