定时任务 订阅
定时任务是一款系统安全类软件,支持Android 2.1。 展开全文
定时任务是一款系统安全类软件,支持Android 2.1。
信息
应用名称
定时任务
应用版本
0.3
运行环境
Android 2.1
应用平台
mobile
应用类型
系统安全类
三维重建简介
Timed Tasks是一款Wi-Fi、飞行模式、蓝牙、数据连接、屏幕亮度定时开关任务软件,让各项设置按自己所设的时间、日期开启或关闭。
收起全文
精华内容
参与话题
问答
  • github:https://github.com/jiasion/eslog wechat:minghui-666 利用redisson实现多实例抢占定时任务 pom.xml <dependency> <groupId>org.redisson</groupId> <artifactId>r...

    github:https://github.com/jiasion/eslog

    wechat:minghui-666

    利用redisson实现多实例抢占定时任务

    pom.xml

    <dependency>
                <groupId>org.redisson</groupId>
                <artifactId>redisson</artifactId>
                <version>3.12.0</version>
    </dependency>

    Kernel.java - 重写多线程调度

    package com.brand.log.scheduler;
    
    import org.springframework.context.annotation.Configuration;
    import org.springframework.scheduling.annotation.SchedulingConfigurer;
    import org.springframework.scheduling.config.ScheduledTaskRegistrar;
    
    import java.util.concurrent.Executors;
    
    @Configuration
    public class Kernel implements SchedulingConfigurer {
    
        @Override
        public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
            //设定一个长度10的定时任务线程池
            taskRegistrar.setScheduler(Executors.newScheduledThreadPool(4));
        }
    }

    RedissonManager.java  -  分布式锁的实现

    package com.brand.log.util;
    
    import lombok.extern.slf4j.Slf4j;
    import org.redisson.Redisson;
    import org.redisson.config.Config;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.stereotype.Component;
    
    import javax.annotation.PostConstruct;
    
    @Component
    @Slf4j
    public class RedissonManager {
    
    
        @Value("${spring.redis.host}")
        private String host;
    
        @Value("${spring.redis.port}")
        private int port;
    
        private Redisson redisson = null;
        private Config config = new Config();
    
        @PostConstruct
        private void init() {
            try {
                config.useSingleServer().setAddress("redis://" + host + ":" + port);
                log.info("redisson address {} {}", host, port);
                redisson = (Redisson) Redisson.create(config);
                log.info("Redisson 初始化完成");
            }
            catch (Exception e) {
                log.error("init Redisson error ", e);
            }
        }
    
        public Redisson getRedisson() {
            return redisson;
        }
    }

    CronSynData.java

    package com.brand.log.scheduler;
    import com.brand.log.util.DateFormatV1;
    import com.brand.log.util.RedisUtil;
    import com.brand.log.util.RedissonManager;
    import lombok.extern.slf4j.Slf4j;
    import org.redisson.Redisson;
    import org.redisson.api.RLock;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.scheduling.annotation.Scheduled;
    import org.springframework.stereotype.Component;
    import java.util.concurrent.TimeUnit;
    
    @Component
    @Slf4j
    public class CronSynData {
    
        @Autowired
        RedissonManager redissonManager;
    
        @Autowired
        RedisUtil redisUtil;
    
        @Autowired
        DateFormatV1 dateFormatV1;
    
        private String lokFlag = ".handleKernel";
    
        private Redisson redisson = null;
    
        /*
        * java定时脚本挂靠实例
        * 多实例会有重复调用问题 + 使用Redisson实现分布式锁
        * 业务逻辑必须加锁 + 且需要保证 tryLock 等待时间小于cron的最小间隔执行时间
        * */
        @Scheduled(cron = "*/10 * * * * *")
        public void handleKernel() {
            redisson = redissonManager.getRedisson();
            if (redisson != null) {
                RLock lock = redisson.getLock(this.getClass().getName() + lokFlag);
                Boolean stat = false;
                try {
                    // 尝试加锁,立即返回,最多等待5s自动解锁
                    stat = lock.tryLock(0, 5, TimeUnit.SECONDS);
                    if (stat) {
                        log.info("{} 取锁成功!{}",this.getClass().getName(), Thread.currentThread().getName());
                        redisUtil.checkCount("log:limit_", dateFormatV1.getDate("HH", "GMT+8"), 60*10, 1000);
                    } else {
                        log.info("{}没有获取到锁:{}", this.getClass().getName(), Thread.currentThread().getName());
                    }
                } catch (InterruptedException e) {
                    log.error("Redisson 获取分布式锁异常", e);
                    if (!stat){
                        return;
                    }
                    lock.unlock();
                }
            }
    
        }
    
    }
    

    kibana - 6个实例

    展开全文
  • Spring+Quartz实现定时任务的配置方法

    万次阅读 多人点赞 2019-07-31 19:16:18
    &lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="... xmlns:context="...
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
    	xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop"
    	xsi:schemaLocation="
    		http://www.springframework.org/schema/beans 
    		http://www.springframework.org/schema/beans/spring-beans.xsd
    		http://www.springframework.org/schema/context
    		http://www.springframework.org/schema/context/spring-context.xsd
    		http://www.springframework.org/schema/tx 
    		http://www.springframework.org/schema/tx/spring-tx.xsd
    		http://www.springframework.org/schema/aop 
    		http://www.springframework.org/schema/aop/spring-aop.xsd">
    <!--  Scheduler配置 -->
    	<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
    		<property name="triggers">
    			<list>
    				<ref bean="teachingProcessTrigger" />
    			</list>
    		</property>
    		<property name="quartzProperties">
    			<props>
    				<prop key="org.quartz.threadPool.threadCount">3</prop>
    			</props>
    		</property>
    	</bean>
    <!--  Trigger配置 -->
    	<bean id="teachingProcessTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
    		<property name="jobDetail">
    			<ref bean="teachingProcess" />
    		</property>
    		<property name="cronExpression">
    			<!--  每天凌晨0点执行一次 -->
    			<value>0 0 0 * * ?</value>
    		</property>
    	</bean>
    <!--  JobDetail配置 -->
    	<bean id="teachingProcess"
    		class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
    		<property name="targetObject">
        <!-- hrQuartzServiceImpl是一个业务类,在其他地方声明了bean,这里直接引用就可以 -->
    			<ref bean="hrQuartzServiceImpl" />
    		</property>
    		<property name="targetMethod">
        <!-- hrQuartzServiceImpl类里作为执行入口的方法名 -->
    			<value>doTeachingProcess</value>
    		</property>
    	</bean>
    </beans>
    

    任务有并行和串行之分,并行是指:一个定时任务,当执行时间到了的时候,立刻执行此任务,不管当前这个任务是否在执行中;串行是指:一个定时任务,当执行时间到了的时候,需要等待当前任务执行完毕,再去执行下一个任务。
    quartz框架中可以设置是否允许任务并行:
    如果是通过MethodInvokingJobDetailFactoryBean在运行中动态生成的Job,配置的xml文件有个concurrent属性,这个属性的功能是配置此job是否可以并行运行,如果为false则表示不可以并行运行,否则可以并行。如果一个job的业务处理发费的时间超过了job的启动的间隔时间(repeatInterval),这个属性非常有用。如果为false,那么,在这种情况下,当前job还在运行,那么下一个job只能延时运行。如果为true,那么job就会并行运行,配置示例如下:

    <bean id="jobCompareB2cAndLocal" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
    	<property name="targetObject " ref="delegateJob " />
    	<property name="targetMethod " value="方法名" />
    	<property name="concurrent " value="false " />
    </bean >
    

    如果不配置,默认是true的,就是允许并行。

    展开全文
  • 请移步链接:https://www.javaclub.club/blog/article.html?id=13
    请移步链接:https://aiximiao.com/article?id=60
    
    展开全文
  • springboot 定时任务开发配置

    万次阅读 2019-07-19 15:24:58
    相关链接:https://blog.csdn.net/xubenxismile/article/details/96453704 一、添加依赖 <parent> <groupId>org.springframework.boot</groupId> <artifactId>.../art...

    相关链接:https://blog.csdn.net/xubenxismile/article/details/96453704

    一、添加依赖

    <parent>
    	<groupId>org.springframework.boot</groupId>
    	<artifactId>spring-boot-starter-parent</artifactId>
    	<version>2.0.4.RELEASE</version>
    	<relativePath/> <!-- lookup parent from repository -->
    </parent>
    
    <properties>
    	<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    	<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    	<java.version>1.8</java.version>
    </properties>
    
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
    </dependencies>

    二、启动类****Application.java配置 @EnableScheduling

    package com.vol;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.scheduling.annotation.EnableScheduling;
    
    @SpringBootApplication
    //定时任务
    @EnableScheduling
    public class SpringbootBaseApplication {
    
    	public static void main(String[] args) {
    
    	    SpringApplication.run(SpringbootBaseApplication1.class, args);
    
    	}
    
    }

    三、编写定时任务,建议定时任务单独建一个目录

    package com.vol.timingTasks;
    
    import org.springframework.scheduling.annotation.Scheduled;
    import org.springframework.stereotype.Component;
    
    /**
     * @Author 徐本锡
     * @Date 2019/7/18
     **/
    
    @Component
    public class exampleTask {
        @Scheduled(cron="0  */1 7-22 * * ?")//每过1分钟(7---22点) 执行一次
    //    @Scheduled(fixedRate = 1000*30)//上次执行完毕之后30秒
        public void runTask(){
            taskA();
            taskB();
    
        }
    
        /**
         * @Author 徐本锡
         * @Date 2019/7/18
         **/
        public void taskA(){
            for(int i=0; i<10; i++){
                System.out.println("taskA----->"+String.valueOf(i+1));
            }
        }
    
    
        /**
         * @Author 徐本锡
         * @Date 2019/7/18
         **/
        public void taskB(){
            for(int i=0; i<10; i++){
                System.out.println("taskB----->"+String.valueOf(i+1));
            }
        }
    }
    
    
    

    四、配置定时任务多线程

    package com.vol.config;
    
    import org.springframework.context.annotation.Configuration;
    import org.springframework.scheduling.annotation.EnableScheduling;
    import org.springframework.scheduling.annotation.SchedulingConfigurer;
    import org.springframework.scheduling.config.ScheduledTaskRegistrar;
    
    import java.util.concurrent.Executors;
    
    /**
      * @Author 徐本锡
      * @Description //定时任务配置类   多线程
      * @Date 2019/7/18
      * @Param
      * @return
      **/
    
    @Configuration
    @EnableScheduling
    public class TimingTasksConfig implements SchedulingConfigurer {
    
        //所有的定时任务都放在一个线程池中,定时任务启动时使用不同都线程。
        @Override
        public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
            //springboot定时任务默认是单线程,现在将线程池改为10个线程的线程池
            //设定一个长度10的定时任务线程池
            taskRegistrar.setScheduler(Executors.newScheduledThreadPool(10));
        }
    
    //    springboot的定时任务默认是单线程的,源码如下:
    //    if (this.taskScheduler == null) {
    //        this.localExecutor = Executors.newSingleThreadScheduledExecutor();
    //        this.taskScheduler = new ConcurrentTaskScheduler(this.localExecutor);
    //    }
    //      定时任务的线程池大小只有1,即单线程线程池
    //      public static ScheduledExecutorService newSingleThreadScheduledExecutor() {
    //        return new Executors.DelegatedScheduledExecutorService
    //                (new ScheduledThreadPoolExecutor(1));
    //      }
    
    }

     

    展开全文
  • SpringBoot-定时任务-集群篇

    万次阅读 2019-10-26 17:42:34
    前面一篇文章(SpringBoot-定时任务)中介绍了如何用SpringBoot框架中的注解方式来实现定时任务,这种方式的好处是不使用第三方的依赖,仅凭几个方便的注解,即可编写一个简单的定时任务处理。 实际开发中为了满足复杂...
  • 定时任务

    千次阅读 2019-08-19 15:17:08
    定时任务:定时执行我们与先设置的指令。 一次性计划任务 周期性计划任务 一次性计划任务 一次性计划任务:执行单个任务之后就会自动退出 at 使用at命令需要先下载at软件包 [root@freedom ~]# yum ...
  • linux crontab定时任务的使用

    万次阅读 多人点赞 2018-03-11 22:28:07
    另外,由于使用者自己也可以设置计划任务,所以,Linux系统也提供了使用者控制计划任务的命令:crontab命令。 一、crond简介 crond是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下...
  • @Scheduled注解的使用这里不详细说明,直接对8个参数进行讲解。 参数详解 1、cron 该参数接收一个cron表达式,cron表达式是一个字符串,字符串以5或6个空格隔开,分开共6或7个域,每一个域代表一个含义。...
  • 现在的web项目中很多场景下都有要执行定时任务的需求,比如说每隔5秒将redis中的统计当天注册用户数持久化到数据库。现在项目中实现这一功能,一般用quartz这一工具框架,但是这个对于一个新手来说比较麻烦,各种查...
  • java 定时任务之一 @Scheduled注解(第一种方法)

    万次阅读 多人点赞 2017-12-12 22:09:22
    使用spring @Scheduled注解执行定时任务: 步骤: 1.xmlns 添加: http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.1.xsd xmlns:task=...
  • SpringQuartz定时任务的cron表达式书写

    万次阅读 2018-09-17 15:09:28
    SpringQuartz定时任务的使用,要配置这个定时任务什么时候执行,周期是多少,周期内执行多少次,这个都是cron表达式来控制的,下面详解一下这个cron表达式。 一、先来举些例子 【1】0 0 10,14,16 * * ? 每天上午10...
  • crontab定时任务不执行的原因

    万次阅读 多人点赞 2017-01-16 18:35:20
    我在网上找的时候发现网上主要...如果停止了就无法执行任何定时任务了,解决的方法是打开它: crond 或 service crond start 如果提示crond命令不存在,可能被误删除了,CentOS下可以通过这个命令重新安装: yum...
  • 使用spring @Scheduled注解执行定时任务

    万次阅读 多人点赞 2012-07-14 09:31:34
    以前框架使用quartz框架执行定时调度问题、老大说这配置太麻烦、每个调度都需要多加在spring的配置中、能不能减少配置的量从而提高开发效率、最近看了看spring的 scheduled的使用注解的方式进行调度、感觉很方便、...
  • 基于Springboot执行多个定时任务并且动态获取定时任务信息 基于Springboot执行多个定时任务并且动态获取定时任务信息 简介 说明 SpringApplication-启动类 动态获取定时任务信息 mapper service service impl ...
  • 定时任务cron表达式详解

    万次阅读 多人点赞 2018-05-18 11:04:35
    cron表达式顺序秒分钟小时日期月份星期年(可选)取值0-590-590-231-30(31)1-121-7允许特殊字符, - * /, - * /, - * /, - * / ? L W C, - * /, - * / L # C1970-2099, - * /字段含义*:代表所有可能的值-:指定范围,:...
  • 定时任务的选型及改造

    万次阅读 2018-03-24 23:18:39
    项目中用到了定时任务,项目之初为了快速开发上线,当时直接采用最简单的Linux自带的crontab;项目逐渐维定下来时,针对定时任务自己进行了相关研究,并根据项目实际情况进行了对比以及相关改造。 【比一比&改...
  • Spring 整合 Quartz 实现动态定时任务(附demo)

    万次阅读 多人点赞 2016-05-01 18:57:24
    最近项目中需要用到定时任务的功能,虽然Spring 也自带了一个轻量级的定时任务实现,但感觉不够灵活,功能也不够强大。在考虑之后,决定整合更为专业的Quartz来实现定时任务功能。普通定时任务首先,当然是添加依赖...
  • **请问下,如何修改调试,定时任务设定,以下2中方法,都未能成功运行test.bat? 双击脚本可以运行: > @echo off rem---contents are not displayed rem -------to create a number of files rem -------...
  • 定时任务框架Quartz-(一)Quartz入门与Demo搭建

    万次阅读 多人点赞 2018-07-10 13:57:07
    Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,完全由Java开发,可以用来执行定时任务,类似于java.util.Timer。但是相较于Timer, Quartz增加了很多功能: 持久性作业 - 就是保持调度...
  • 1.1创建任务表 CREATE TABLE `scheduled_task` ( `id` int(11) NOT NULL AUTO_INCREMENT, `task_key` varchar(128) NOT NULL COMMENT '任务key值(使用bean名称)', `task_desc` varchar(128) DEFAULT NULL ...
  • 宝塔配置定时任务 lnmp定时任务

    万次阅读 2018-10-22 10:42:52
    lnmp:*/1 * * * * /usr/local/php/bin/php /data/wwwroot/ibybank.cn/yii crontab/index >> /data/wwwroot/ibybank.cn/crontab.log
  • 如果将定时任务部署在一台服务器上,那么这个定时任务就是整个系统的单点,这台服务器出现故障的话会影响服务。对于可以冗余的任务(重复运行不影响服务),可以部署在多台服务器上,让他们同时执行,这样就可以很...

空空如也

1 2 3 4 5 ... 20
收藏数 65,912
精华内容 26,364
关键字:

定时任务