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类] 二.主窗 ...
最新文章
- SpringBoot-JPA入门
- 倦怠和枯燥_启动倦怠
- JavaScript基础知识(函数)
- 6.2 K-Means 算法步骤-机器学习笔记-斯坦福吴恩达教授
- mysql 单号,利用 MySQL 自增列生成订单号
- java连续输入_java – 要求用户进行多次输入
- OpenCV使用FacemarkAAM
- 免费的数字图书馆_不仅是书籍:您当地图书馆可能提供的所有免费数字资料
- 在雅加达EE TCK中使用Arquillian的可能方法
- 学计算机高中要买电脑,大一新生,打着学习的“口号”要求买电脑,父母到底该不该答应?...
- linux cacti 搭建,linux下搭建cacti监控(示例代码)
- 读书笔记——《沉思录》(1/4)
- python练手经典100例-Python 的练手项目有哪些值得推荐?
- 40道JAVA经典算法面试题(答案)
- 钢构件建筑材料英国UKCA认证—EN 13381-8
- CSA云安全指南V4.0 D9 D10
- android 农历工具类,公历农历互相转换的Java日历工具类
- uni-app 分享给好友,生成小程序二维码海报
- 我讨厌单元测试:滕振宇谈如何进行单元测试
- 【前端技术】一篇文章搞掂:WeX5