Java定时多线程任务实现(TimerTask)
java中实现多线程,可通过继承Thread类或实现Runable接口。实现Runnable接口比继承Thread类所具有的优势:适合多个相同的程序代码的线程去处理同一个资源;可以避免java中的单继承的限制;增加程序的健壮性,代码可以被多个线程共享,代码和数据独立。
这里采用TimerTask来定时执行任务。TimerTask是一个抽象类,实现了Runnable接口,所以具备了多线程的能力。
package ct.tool;import java.util.Calendar;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;public class smooass {public static class FtpFileSnapshotTask extends TimerTask{ //每隔5分钟取ftp服务器上指定目录的文件名private int id; public FtpFileSnapshotTask(int id){ this.id = id; } @Override public void run() { System.out.println("线程"+ id +": 正在 执行。。"); //System.gc(); } } public static class BaseLacCiSnapshotTask extends TimerTask{ //每天零点更新基站信息 private int id; public BaseLacCiSnapshotTask(int id){ this.id = id; } @Override public void run() { System.out.println("线程"+ id +": 正在 执行。。"); //System.gc(); } } // 增加或减少天数 public static Date addDay(Date date, int num) { Calendar startDT = Calendar.getInstance(); startDT.setTime(date); startDT.add(Calendar.DAY_OF_MONTH, num); return startDT.getTime(); } private static final long PERIOD_DAY = 24 * 60 * 60 * 1000; //时间间隔(一天) public static void main(String[] args) { Timer timer = new Timer(); //启动ftp文件获取FtpFileSnapshotTask ftpTask=new FtpFileSnapshotTask(1);timer.schedule(ftpTask, 1000, 5*60*1000);// 1秒后启动任务,以后每隔5分执行一次线程 //启动基站文件获取Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.HOUR_OF_DAY, 1); //凌晨1点 calendar.set(Calendar.MINUTE, 0); calendar.set(Calendar.SECOND, 0); Date date=calendar.getTime(); //第一次执行定时任务的时间 //如果第一次执行定时任务的时间 小于当前的时间 //此时要在 第一次执行定时任务的时间加一天,以便此任务在下个时间点执行。如果不加一天,任务会立即执行。 if (date.before(new Date())) { date = smooass.addDay(date, 1); } BaseLacCiSnapshotTask baseTask=new BaseLacCiSnapshotTask(2);timer.schedule(baseTask,date,PERIOD_DAY);//以date为参数,指定某个时间点执行线程 }
}
Java定时多线程任务实现(TimerTask)相关推荐
- java定时调度main方法_java相关:Spring中实现定时调度的几种方法
java相关:Spring中实现定时调度的几种方法 发布于 2020-11-28| 复制链接 本篇文章主要介绍了Spring中实现定时调度示例,可以在无人值守的时候系统可以在某一时刻执行某些特定的功能 ...
- java 定时执行任务
java 定时执行任务 固定某个时间,某个周期运行任务. 1. Timer定时器 封装与TimerTask类中. 用法,继承TimerTask类,创建Timer对象timer,schedule()调度 ...
- java并发多线程面试_Java多线程并发面试问答
java并发多线程面试 Today we will go through Java Multithreading Interview Questions and Answers. We will al ...
- Java定时任务(一) Timer及TimerTask的案例解析及源码分析
Java定时任务(一) Timer及TimerTask的案例解析及源码分析 一.概述: 定时任务这个概念在Java的学习以及项目的开发中并不陌生,应用场景也是多种多样.比如我们会注意到12306网站 ...
- 项目中Java的多线程一般用在哪些场景?
项目中Java的多线程一般用在哪些场景? 多线程使用的主要目的在于 举个简单的例子 伪代码 多线程的常见应用场景 多线程使用的主要目的在于 1.吞吐量:你做WEB,容器帮你做了多线程,但是他只能帮你做 ...
- Java定时任务调度工具之Timer
Java定时任务调度工具详解之Timer 导航: Java定时任务调度工具详解之Timer 一. 概述 1.1 课程介绍 1.2 Timer简介 1.3 实战演练 二. timer定时函数的用法 2. ...
- java面试题成都_成都汇智动力-java面试——多线程面试题
原标题:成都汇智动力-java面试--多线程面试题 1.多线程有什么用?发挥多核CPU的优势 防止阻塞 便于建模 2.创建线程的方式继承Thread类 实现Runnable接口 至于哪个好,不用说肯定 ...
- 第十章 进程间的通信 之 Java/Android多线程开发(二)
文章目录 (一)Java 多线程开发 1.1)线程状态 1.2)线程控制方法 (1.2.1)Synchronized (1.2.2)Volatile (1.2.3)ReentrantLock 1.3) ...
- Java使用多线程和GUI实现购买火车票<集合>
文章目录 绪: 样例 DEMO--购票项目 项目要求 实现步骤 一.[车次.txt][Person类][Ticket类] 1.[车次.txt] 2.[Person类] 3.[Ticket类] 二.主窗 ...
最新文章
- VirtualBox 虚拟Ubuntu系统与主机互ping
- C 函数 toascii
- WSS(MOSS)如何修改Rich文本编辑器的宽度
- 深度学习100例-卷积神经网络(CNN)识别神奇宝贝小智一伙 | 第16天
- jboss4.2.3_JBoss 4.2.x Spring 3 JPA Hibernate教程
- FunDA(7)- Reactive Streams to fs2 Pull Streams
- 机器学习算法(三): 基于支持向量机的分类预测
- Java Error(四)
- 一例Ext4文件系统fsck后损坏的修复过程
- 使用winx dvd ripper转换视频,如何获得高质量的视频?
- 超级详细的java Collection集合面试题
- 可视化模板:销售\采购\财务收支等模板分享
- 什么是数据挖掘,机器学习与数据挖掘主要有什么联系?
- PROFINET转EtherCAT网关方案设计
- 新闻分类:多分类问题
- bootstrap——模态框
- 检索式问答系统baseline
- nextcloud19.0.1部署
- 计算机主机风扇怎么庄,机箱风扇怎么装,小编教你电脑机箱风扇怎么装
- 百度地图添加自定义点标记、文本标注、点标记