前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >13.线程调度

13.线程调度

作者头像
Devops海洋的渔夫
发布2022-03-23 16:27:20
3160
发布2022-03-23 16:27:20
举报
文章被收录于专栏:Devops专栏Devops专栏

13.线程调度

前言

上一章节我们讲了线程池,那么下面来讲线程池的延时调度执行。

ScheduledExecutorService

代码语言:javascript
复制
一个 ExecutorService,可安排在给定的延迟后运行或定期执行的命令。

代码示例

代码语言:javascript
复制

import java.util.Random;
import java.util.concurrent.*;

/**
 *
 * 一、线程池:提供了一个线程队列,队列中保存着所有等待状态的线程。避免了创建与销毁额外开销,提高了响应的速度。
 *
 * 二、线程池的体系结构:
 *     java.util.concurrent.Executor : 负责线程的使用与调度的根接口
 *        |--**ExecutorService 子接口: 线程池的主要接口
 *           |--ThreadPoolExecutor 线程池的实现类
 *           |--ScheduledExecutorService 子接口:负责线程的调度
 *              |--ScheduledThreadPoolExecutor :继承 ThreadPoolExecutor, 实现 ScheduledExecutorService
 *
 * 三、工具类 : Executors
 * ExecutorService newFixedThreadPool() : 创建固定大小的线程池
 * ExecutorService newCachedThreadPool() : 缓存线程池,线程池的数量不固定,可以根据需求自动的更改数量。
 * ExecutorService newSingleThreadExecutor() : 创建单个线程池。线程池中只有一个线程
 *
 * ScheduledExecutorService newScheduledThreadPool() : 创建固定大小的线程,可以延迟或定时的执行任务。
 *
 * @author Aron.li
 * @date 2020/11/4 21:41
 */
public class TestScheduled {

    public static void main(String[] args) throws Exception {
        //1.创建调度线程池 ScheduledExecutorService
        ScheduledExecutorService pool = Executors.newScheduledThreadPool(5);

        //2.使用线程池创建一个线程执行,并且延时调度
        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;
            }

        }, 1, TimeUnit.SECONDS); // 注意:时间单位是可以根据 TimeUnit.DAYS TimeUnit.DAYS 修改的。

        //3.读取结果
        System.out.println(result.get());

        //4.关闭线程池
        pool.shutdown();
    }

}

执行效果如下:

image-20201104214808439

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-03-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 海洋的渔夫 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 13.线程调度
    • 前言
      • ScheduledExecutorService
        • 代码示例
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档