A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 施大勇 中级黑马   /  2013-9-14 16:24  /  967 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 施大勇 于 2013-9-28 15:38 编辑
  1. package timerTesk;
  2. import java.text.SimpleDateFormat;
  3. import java.util.Date;
  4. import java.util.concurrent.ExecutorService;
  5. import java.util.concurrent.Executors;
  6. import java.util.concurrent.ScheduledExecutorService;
  7. import java.util.concurrent.TimeUnit;
  8. public class TeskTest {
  9.   //1.3之后的功能。定时调度。
  10. public static void main(String[] args) {
  11.   //用TimerTask类定义一个定时任务,此类是Runnable接口的子类,必须重写void()方法。
  12.   /*TimerTask task=new TimerTask(){
  13.    public void run(){
  14.     SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  15.     Date dateNow=new Date();
  16.     System.out.println(df.format(dateNow));
  17.    }
  18.   };*/
  19.   //定义一个计时器,通过Tiemr类来定义,调用此类的构造方法时启动一个定时器。
  20.   /*Timer timer=new Timer();
  21.   timer.schedule(task, 1000, 5000);*/ //1秒后执行,以后间隔5秒周期执行。
  22.   /*schedule()有很多重载方法,分别对应着不同的定时调度方式,同时还有
  23.    * public void scheduleAtFixedRate(TimerTask task,Date firstTime,long period)指定某一个时间点后周期执行。
  24.    * public void scheduleAtFixedRate(TimerTask task,long delay,long period)指定一段时间后周期执行。
  25.    */
  26.   //1.5之后出现的线程池,将线程的定时与任务封装成为一个对象,这个对象中提供了任务的调度方法
  27.   ScheduledExecutorService timer1 =  Executors.newScheduledThreadPool(1);
  28.   timer1.scheduleAtFixedRate(
  29.     new Runnable(){
  30.      public  void run(){
  31.       SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  32.       Date dateNow=new Date();
  33.       System.out.println(df.format(dateNow));
  34.      }
  35.     },
  36.     5,
  37.     5,
  38.     TimeUnit.SECONDS);
  39.   //从上面可以看出,这两种形式都完成了同样的功能,只不过第二种方式最后一个参数可以设置时间的单位。
  40.   //而下面的代码我们可以看到主要是用于提交任务,即ExecutorService主要用于提交,但它不会自己执行,需要有程序调用它才执行。
  41.   //同时它有多种提交方式,可以提交一组任务。方法:invokeAny(),invokeAll();护展了Executor只能提交一个任务的execute()方法。
  42.   ExecutorService pool = Executors.newSingleThreadExecutor();//线程池,产生一组线程 。
  43.   pool.execute(new Runnable(){//线程池取了一个线程,方法中的内部类。
  44.    public void run(){
  45.    }
  46.   });
  47. }
  48. }
  49. 以上代码是我自己的一点看法,有不对的地方请各位大侠指点,并求各位有深入理解的能够补充说明,在这里多多交流.
复制代码

1 个回复

倒序浏览
亲,如问题已解决请将分类的“未解决”改为“已解决”。
以后的问题贴也要及时更改分类哦~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马