`

通过Executors创建定时任务

    博客分类:
  • Java
 
阅读更多

通过Executors创建定时任务

相对时间的计算:

long period = new Date("2014-10-1").getTime - System.getCurrentTimeMills

 

 

package thread;

import java.util.Date;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;

/**
 * 创建定时任务 
 *
 */
public class Concurrent_Schedule {
	public static void main(String[] args) {
		
		ScheduledExecutorService schedualedExecutor = Executors.newScheduledThreadPool(2);
		
		//延迟多长时间后自动执行任务,只执行1次
		schedualedExecutor.schedule(new Runnable() {
			public void run() {
				System.out.println(Thread.currentThread().getName() + ", 3秒后执行定时任务!" + new Date());
			}
		}, 3, TimeUnit.SECONDS);
		
		//延迟多长时间后自动执行任务,接着每隔多长时间调度1次,调度工作会一直进行
		schedualedExecutor.scheduleAtFixedRate(new Runnable() {
			public void run() {
				System.out.println(Thread.currentThread().getName() + ", 1秒后执行定时任务,接着每隔2秒执行1次!" + new Date());
				try {
					Thread.sleep(3000);
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
			}
		}, 1, 2, TimeUnit.SECONDS);
		
		//延迟多长时间后自动执行任务,待该线程执行任务结束后,在隔多长时间调度1次,调度工作会一直进行
		schedualedExecutor.scheduleWithFixedDelay(new Runnable() {
			public void run() {
				System.out.println(Thread.currentThread().getName() + ", 1秒后执行定时任务,当前一个任务执行完成后,再每隔2秒执行1次!" + new Date());
				try {
					Thread.sleep(3000);
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
			}
		}, 1, 2, TimeUnit.SECONDS);
		
		//when server shutdown
		//schedualedExecutor.shutdown();
	}
}

 

分享到:
评论

相关推荐

    页面控制定时任务源码

    // 使用JavaScript的setInterval创建定时任务 var refreshIntervalId = setInterval(function() { // 这里可以是向服务器发送Ajax请求,获取新数据 // 假设getDataFromServer是一个返回Promise的函数 ...

    java 定时任务及jar包

    - 可以通过`Executors.newScheduledThreadPool(int corePoolSize)`创建一个调度线程池。 - `schedule(Runnable command, long delay, TimeUnit unit)`、`scheduleAtFixedRate(Runnable command, long initialDelay...

    定时任务(java)

    Spring框架的`@Scheduled`注解允许开发者在方法上标注,从而创建定时任务,非常方便。例如: ```java import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype....

    JAVA定时任务调度

    Java定时任务调度是Java开发中一个非常重要的技术领域,它允许开发者在特定的时间点或按照预定义的周期执行任务,从而实现自动化的工作流程。在Java中,我们可以使用多种方式来实现定时任务,如Java内置的`java.util...

    JAVA项目服务器启动时自启动指定的Servlet,并定时执行任务

    在这个例子中,我们在`init()`方法中创建了一个`ScheduledExecutorService`实例,并设置了一个定时任务,它将在服务器启动后每小时执行一次。在`destroy()`方法中,我们关闭了`executor`以释放资源。 总结,通过在`...

    Java定时执行某个任务

    `Timer`适合简单的定时任务,而`ScheduledExecutorService`更适合复杂的需求,如多线程环境和高并发场景。选择哪种方式取决于具体的应用场景和性能需求。在实际开发中,理解并熟练掌握这两种方法能帮助我们编写出...

    java 定时执行任务

    `Timer`类是Java早期提供的定时任务实现,它允许我们创建一个定时器对象,然后调度`TimerTask`任务来执行。以下是如何使用`Timer`和`TimerTask`的基本步骤: ```java import java.util.*; class TimerTaskDemo ...

    Java并发编程中使用Executors类创建和管理线程的

    4. **newScheduledThreadPool(int corePoolSize)**:创建一个支持定时及周期性任务执行的线程池。除了可以立即执行任务外,还可以延迟或定期执行任务。对于需要定时调度的任务,如心跳检测、定时发送邮件等,这是...

    JAVA 动态设置定时任务

    使用`Timer`创建定时任务通常包括以下步骤: - 创建一个`Timer`实例:`Timer timer = new Timer();` - 定义一个`TimerTask`子类,覆盖`run()`方法,定义任务逻辑。 - 使用`timer.schedule(TimerTask task, long ...

    定时任务,JSP

    在IT行业中,定时任务是应用程序不可或缺的一部分,它允许我们在特定的时间执行特定的操作,例如数据备份、清理缓存、发送邮件等。JSP(JavaServer Pages)是Java Web开发中的一个技术,用于创建动态网页。结合这两...

    java 定时备份数据库

    总之,实现Java定时备份MySQL数据库需要理解如何在Java中调用外部命令,如何创建定时任务,以及如何与Spring等框架集成。在SSM项目中,可以利用Spring的定时任务特性来优雅地管理备份任务。记得在实际应用中处理异常...

    Java执定定时任务

    本篇文章将深入探讨如何使用Java内置的`java.util.Timer`和`java.util.TimerTask`类来创建和管理定时任务。这两个类是Java标准库提供的一套简单但功能强大的工具,用于调度重复或一次性执行的任务。 首先,`java....

    java定时检测系统

    4. **Spring Boot的定时任务(@Scheduled)**:在Spring Boot应用中,可以利用Spring的`@Scheduled`注解来轻松创建定时任务。只需在方法上添加该注解,并设置相应的cron表达式,即可让Spring容器自动管理并执行定时...

    java每天实现定点执行任务

    要完成这样的功能,我们通常会利用Java的定时任务框架,如`java.util.Timer`类、`java.util.concurrent.ScheduledExecutorService`或者更高级的Quartz库。以下将详细介绍如何使用这些方法来实现每日定时任务。 1. *...

    定时的爱-完成定时任务的加载和发送

    在Java编程领域,定时任务是不可或缺的一部分,它允许开发者安排任务在特定时间点或周期性地执行。"定时的爱-完成定时任务的加载和发送"这个标题暗示了我们正在探讨的是如何在Java环境中实现定时任务的加载和调度,...

    Executor,Executors,ExecutorService比较.docx

    【Executor、Executors和ExecutorService详解】...在实际编程中,我们通常通过`Executors`创建线程池,然后利用`ExecutorService`的特性来执行和管理任务。了解这些概念和用法,有助于我们构建高效、稳定的多线程环境。

    java web使用监听器实现定时周期性执行任务demo

    综上所述,这个"java web使用监听器实现定时周期性执行任务demo"提供了一个基础框架,通过Servlet监听器在Web应用启动时启动定时任务,周期性执行用户自定义的操作。开发者可以根据实际需求,在`Runnable`的`run`...

    JAVA定时任务

    首先,Java提供了一个内置的定时框架——`java.util.Timer`类和`TimerTask`类,它们可以用来创建简单的定时任务。`Timer`类用于调度任务,而`TimerTask`是执行的任务对象。以下是一个简单的示例: ```java import ...

    springboot schedule 解决定时任务不执行的问题

    Spring Boot Schedule 定时任务不执行的问题解决方案 ...使用 Spring Boot 的 @Scheduled 注解可以轻松实现定时任务,但是需要注意单线程执行的问题,可以通过重新配置 Schedule 来解决这个问题。

    springboot实现多实例crontab抢占定时任务(实例代码)

    通过这种方式,我们实现了Spring Boot多实例下的抢占式定时任务。当多个实例同时运行时,只有一个实例能够成功获取锁并执行任务,其他实例会在尝试获取锁失败后放弃执行。这种方式提高了系统的稳定性和资源利用率,...

Global site tag (gtag.js) - Google Analytics