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)相关推荐

  1. java定时调度main方法_java相关:Spring中实现定时调度的几种方法

    java相关:Spring中实现定时调度的几种方法 发布于 2020-11-28| 复制链接 本篇文章主要介绍了Spring中实现定时调度示例,可以在无人值守的时候系统可以在某一时刻执行某些特定的功能 ...

  2. java 定时执行任务

    java 定时执行任务 固定某个时间,某个周期运行任务. 1. Timer定时器 封装与TimerTask类中. 用法,继承TimerTask类,创建Timer对象timer,schedule()调度 ...

  3. java并发多线程面试_Java多线程并发面试问答

    java并发多线程面试 Today we will go through Java Multithreading Interview Questions and Answers. We will al ...

  4. Java定时任务(一) Timer及TimerTask的案例解析及源码分析

    Java定时任务(一)  Timer及TimerTask的案例解析及源码分析 一.概述: 定时任务这个概念在Java的学习以及项目的开发中并不陌生,应用场景也是多种多样.比如我们会注意到12306网站 ...

  5. 项目中Java的多线程一般用在哪些场景?

    项目中Java的多线程一般用在哪些场景? 多线程使用的主要目的在于 举个简单的例子 伪代码 多线程的常见应用场景 多线程使用的主要目的在于 1.吞吐量:你做WEB,容器帮你做了多线程,但是他只能帮你做 ...

  6. Java定时任务调度工具之Timer

    Java定时任务调度工具详解之Timer 导航: Java定时任务调度工具详解之Timer 一. 概述 1.1 课程介绍 1.2 Timer简介 1.3 实战演练 二. timer定时函数的用法 2. ...

  7. java面试题成都_成都汇智动力-java面试——多线程面试题

    原标题:成都汇智动力-java面试--多线程面试题 1.多线程有什么用?发挥多核CPU的优势 防止阻塞 便于建模 2.创建线程的方式继承Thread类 实现Runnable接口 至于哪个好,不用说肯定 ...

  8. 第十章 进程间的通信 之 Java/Android多线程开发(二)

    文章目录 (一)Java 多线程开发 1.1)线程状态 1.2)线程控制方法 (1.2.1)Synchronized (1.2.2)Volatile (1.2.3)ReentrantLock 1.3) ...

  9. Java使用多线程和GUI实现购买火车票<集合>

    文章目录 绪: 样例 DEMO--购票项目 项目要求 实现步骤 一.[车次.txt][Person类][Ticket类] 1.[车次.txt] 2.[Person类] 3.[Ticket类] 二.主窗 ...

最新文章

  1. VirtualBox 虚拟Ubuntu系统与主机互ping
  2. C 函数 toascii
  3. WSS(MOSS)如何修改Rich文本编辑器的宽度
  4. 深度学习100例-卷积神经网络(CNN)识别神奇宝贝小智一伙 | 第16天
  5. jboss4.2.3_JBoss 4.2.x Spring 3 JPA Hibernate教程
  6. FunDA(7)- Reactive Streams to fs2 Pull Streams
  7. 机器学习算法(三): 基于支持向量机的分类预测
  8. Java Error(四)
  9. 一例Ext4文件系统fsck后损坏的修复过程
  10. 使用winx dvd ripper转换视频,如何获得高质量的视频?
  11. 超级详细的java Collection集合面试题
  12. 可视化模板:销售\采购\财务收支等模板分享
  13. 什么是数据挖掘,机器学习与数据挖掘主要有什么联系?
  14. PROFINET转EtherCAT网关方案设计
  15. 新闻分类:多分类问题
  16. bootstrap——模态框
  17. 检索式问答系统baseline
  18. nextcloud19.0.1部署
  19. 计算机主机风扇怎么庄,机箱风扇怎么装,小编教你电脑机箱风扇怎么装
  20. 百度地图添加自定义点标记、文本标注、点标记

热门文章

  1. c语言 offsetof函数,C 库宏 - offsetof()函数
  2. python print换行_聊聊 print 的前世今生
  3. C#设计模式之:抽象工厂模式与反射
  4. markdown分享
  5. sublime Text3常用快捷键
  6. 软件工程——理论、方法与实践⑨
  7. 如何将数据库文件.mdf导入/恢复到SQL_Server2000
  8. TKStudio-LPC1220_GPIO_LED工程后记
  9. JAVA共通関数--文字列に空白を追加する
  10. 转:Ubuntu 开机加载路由设置