ScheduledThreadPoolExecutor

来源:互联网 发布:vs2017写c语言 编辑:程序博客网 时间:2024/04/30 22:49

ScheduledThreadPoolExecutor是ThreadPoolExecutor的子类;

JDK api里是这么说的:

ThreadPoolExecutor,它可另行安排在给定的延迟后运行命令,或者定期执行命令。需要多个辅助线程时,或者要求ThreadPoolExecutor 具有额外的灵活性或功能时,此类要优于 Timer

一旦启用已延迟的任务就执行它,但是有关何时启用,启用后何时执行则没有任何实时保证。按照提交的先进先出 (FIFO) 顺序来启用那些被安排在同一执行时间的任务。

---------------

平时我们在执行一个定时任务时,会采用Time,和TimeTask来组合处理;

但是Timer和TimerTask存在一些缺陷:

1:Timer只创建了一个线程。当你的任务执行的时间超过设置的延时时间将会产生一些问题。

2:Timer创建的线程没有处理异常,因此一旦抛出非受检异常,该线程会立即终止。

JDK 5.0以后推荐使用ScheduledThreadPoolExecutor。该类属于Executor Framework,它除了能处理异常外,还可以创建多个线程解决上面的问题。

以下为测试代码:

[java] view plaincopy
  1. public class TaskTest {  
  2.    static ScheduledThreadPoolExecutor stpe = null;  
  3.    static int index;  
  4.     /** 
  5.      * @param args the command line arguments 
  6.      */  
  7.     public static void main(String[] args) {  
  8.         // TODO code application logic here  
  9.         //构造一个ScheduledThreadPoolExecutor对象,并且设置它的容量为5个  
  10.         stpe = new ScheduledThreadPoolExecutor(5);  
  11.         MyTask task = new MyTask();  
  12. //隔2秒后开始执行任务,并且在上一次任务开始后隔一秒再执行一次;  
  13. //        stpe.scheduleWithFixedDelay(task, 2, 1, TimeUnit.SECONDS);  
  14.         //隔6秒后执行一次,但只会执行一次。  
  15.         stpe.schedule(task, 6, TimeUnit.SECONDS);  
  16.     }  
  17.   
  18.     private static String getTimes() {  
  19.         SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss E");  
  20.         Date date = new Date();  
  21.         date.setTime(System.currentTimeMillis());  
  22.         return format.format(date);  
  23.     }  
  24.   
  25.     private static class MyTask implements Runnable {  
  26.   
  27.         @Override  
  28.         public void run() {  
  29.             index++;  
  30.             System.out.println("2= " + getTimes()+" "  +index);  
  31.             if(index >=10){  
  32.                 stpe.shutdown();  
  33.                 if(stpe.isShutdown()){  
  34.                     System.out.println("停止了????");  
  35.                 }  
  36.             }  
  37.         }  
  38.     }  
  39. }  
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 发现幼儿园给孩子吃药片该怎么办 做老师的打学生被家长投诉怎么办 学生认为老师向家长打报告怎么办 老师发打12分的试卷给家长怎么办 孩子在学校顶撞老师不让上学怎么办 被老师骂了不敢去学校怎么办 孩子不爱去幼儿园 总是哭怎么办呢 孩子在幼儿园被老师罚家长该怎么办 孩子不喜欢幼儿园里的体能课怎么办 初中叛逆期的孩子怎么办老师做法 二年级孩子不受老师待见怎么办 孩子该上初中了没学籍怎么办 四个多月的婴儿不喜欢看人怎么办 2个月婴儿不喜欢吃奶粉怎么办 想学习但是又学不进去怎么办 在省外读书 回来读高中学籍怎么办 一岁宝宝这几天不爱吃饭怎么办 2岁的宝宝吃多了怎么办 小孩吃了退烧药吐了怎么办 牙齿与牙齿之间有洞喜欢塞牙怎么办 胃有点烧心天天没食欲不饿怎么办 1岁半宝宝不吃饭光喝奶粉怎么办 一岁半宝宝光喝奶粉不吃饭怎么办 一岁半的宝宝光喝奶粉不吃饭怎么办 两岁半宝宝光喝奶粉不吃饭怎么办 宝宝9个月不好好吃饭奶粉怎么办 2岁半宝宝不愿意自己吃饭怎么办 一周岁多的宝宝不吃饭怎么办 一岁宝宝吃母乳不爱吃饭怎么办 三个月大的宝宝不肯喝奶粉怎么办 自己要上班婆婆带孩子看不惯怎么办 让农村婆婆来给我带孩子怎么办 吃的不好胃难受怎么办吃什么药 特别讨厌婆婆还需要她带小孩怎么办 一岁八个月宝宝不喜欢穿袜子怎么办 未来婆婆给我买衣服我不喜欢怎么办 孩子调皮被同学排斥不想上学怎么办 宝宝出生没人带怎么办自己要上班 孩子上幼儿园一年了还哭怎么办 6年级孩子会认字不会写怎么办 小孩写字没兴趣爱玩玩具怎么办