前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >用线程池执行定时任务

用线程池执行定时任务

作者头像
呼延十
发布2019-06-26 16:50:07
2.4K0
发布2019-06-26 16:50:07
举报
文章被收录于专栏:呼延

背景介绍

还是年轻啊,知识储备严重不足.

今天大佬让我实现以下XXX.

每次用户请求都会判断当前值在不在集合里面,集合数据来自于数据库,不用做缓存,每隔几分钟从数据库load一下数据放到内存就行.

我一脸懵逼,操作内存?我不会啊.

而且没有用spring框架,我也不会定时任务啊…Timer什么的记不住要现场查一下吗?

然后大佬帮我写了一下…..我现在来复习一下.

场景模拟如下:

每隔X段时间,随机生成一些随机数放到内存中.会有用户请求接口来查看某个值是否在其中.

具体实现了:

每隔5s,随机生成3个随机数替换掉原来的,然后启动一个死循环不断判断2是否在这次的list中. ``

其实比较简单,当时一脸懵逼没想起来,也是对已有知识掌握的不够熟悉.

  1. 放进内存问题. 这个其实直接new个list就好,就在内存里面啊….
  2. 定时任务,用Java的定时线程池来解决.

实现代码

代码语言:javascript
复制
package daily;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.concurrent.ScheduledThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicReference;

/**
 * Created by pfliu on 2019/03/29.
 */
public class ScheduleThreadTest {

    private static final AtomicReference<List<Integer>> list = new AtomicReference<>(new ArrayList<>());

    public static void main(String[] args) throws InterruptedException {
        // 线程池执行定时任务
        ScheduledThreadPoolExecutor schedule = new ScheduledThreadPoolExecutor(1);

        schedule.scheduleWithFixedDelay(() -> {
            // 每隔5秒生成3个1-10的数字,放进list里面
            List<Integer> integers = new ArrayList<>();
            for (int i = 0; i < 3; ++i) {
                integers.add(new Random().nextInt(10));
            }
            list.set(integers);
            System.out.println("now list = " + integers.toString());

        }, 0, 5, TimeUnit.SECONDS);

        // 测试程序,每一秒测试一下2是否在当前的list中.
        while (true) {
            int target = 2;
            System.out.println(list.get().contains(target));
            Thread.sleep(1000);
        }
    }

}

要活学活用啊亲.

完.

ChangeLog

2019-01-28

以上皆为个人所思所得,如有错误欢迎评论区指正。

欢迎转载,烦请署名并保留原文链接。

联系邮箱:huyanshi2580@gmail.com

更多学习笔记见个人博客——>呼延十

var gitment = new Gitment({ id: '用线程池执行定时任务', // 可选。默认为 location.href owner: 'hublanker', repo: 'blog', oauth: { client_id: '2297651c181f632a31db', client_secret: 'a62f60d8da404586acc965a2ba6a6da9f053703b', }, }) gitment.render('container')



本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景介绍
    • 实现代码
      • ChangeLog
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档