2.9 线程与任务

  Java中建立一个线程和对线程管理不是什么复杂的事情,但是在一个系统中一般都会有大量的定时任务,因此我们需要建立一个机制能方便的扩展各种定时任务。

  首先建立基本线程BaseThread,它完成基本的线程的基本功能,包括日志信息和状态监控,只是间隔时间和要完成的任务不能确定,我们建立2个抽象方法:

  abstract public long getInterval() throws Exception;//间隔时间

  abstract public void doTask() throws Exception;//要完成的任务

  我不想系统存在的线程过多,于是我把优先级不高的一些线程封装成任务,由一个线程依次执行。

  ArrayList tasks;//定时(次数)执行的任务的集合
  /**
   * 增加一个定时任务
   * @param timerTask    定时任务
   */
  public void addTimerTask(Task task){
    tasks.add(task);
  }
  Task是一个任务接口,就一个方法:

  /**
   * 检查运行
   * @param ds   数据源
   * @throws java.lang.Exception   Exception
   */
  public void runTask(DataSource ds) throws Exception;

  BaseTimesTask是Task的一个基本实现,它完成基本的计次任务(循环多少次执行一次),它实现公共的部分,只留下具体执行的方法和计次的参数名由子类实现:

  /**
   * 运行
   * @param ds   数据源
   */
  abstract public void run(DataSource ds);
  /**
   * 取Local.properties配置文件中的参数名
   * @return    参数名
   */
  public String getParameterName(){
    return null;//可以没有,表示每次都执行
  }
  需要说明的是:run(DataSource ds)不抛出例外,必须自己处理,因为要避免一个任务发生错误影响其它任务的执行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值