JDK5 java.util.concurrent 线程池[2]
![JDK5 java.util.concurrent 线程池[2]](http://img.zhputi.com/uploads/b0d1/b0d1e1eb69716ce6973517f4f0097e8410922.jpg)
JDK5 java.util.concurrent 线程池[2]
需要注意的是线程池必须使用shutdown来显式关闭 否则主线程就无法退出 shutdown也不会阻塞主线程
许多长时间运行的应用有时候需要定时运行任务完成一些诸如统计 优化等工作 比如在电信行业中处理用户话单时 需要每隔 分钟处理话单 网站每天凌晨统计用户访问量 用户数 大型超时凌晨 点统计当天销售额 以及最热卖的商品 每周日进行数据库备份 公司每个月的 号计算工资并进行转帐等 这些都是定时任务 通过 java的并发库concurrent可以轻松的完成这些任务 而且非常的简单
packageconcurrent; importstaticjava util concurrent TimeUnit SECONDS; importjava util Date; importjava util concurrent Executors; importjava util concurrent ScheduledExecutorService; importjava util concurrent ScheduledFuture; publicclassTestScheduledThread{ publicstaticvoidmain(String[]args){ finalScheduledExecutorServicescheduler=Executors newScheduledThreadPool( ); finalRunnablebeeper=newRunnable(){ intcount= ; publicvoidrun(){ System out println(newDate()+ beep +(++count)); } }; // 秒钟后运行 并每隔 秒运行一次 finalScheduledFuture<?>beeperHandle=scheduler scheduleAtFixedRate( beeper SECONDS); // 秒钟后运行 并每次在上次任务运行完后等待 秒后重新运行 finalScheduledFuture<?>beeperHandle =scheduler scheduleWithFixedDelay(beeper SECONDS); // 秒后结束关闭任务 并且关闭Scheduler scheduler schedule(newRunnable(){ publicvoidrun(){ beeperHandle cancel(true); beeperHandle cancel(true); scheduler shutdown(); } } SECONDS); } }
为了退出进程 上面的代码中加入了关闭Scheduler的操作 而对于 小时运行的应用而言 是没有必要关闭Scheduler的
lishixinzhi/Article/program/Java/gj/201311/27714- 上一篇
微信附近的人不显示我 想用分身大师再登录个微信,为什么填写的还是原来手机号,这样用的不就是同一个微信嘛
想用分身大师再登录个微信,为什么填写的还是原来手机号,这样用的不就是同一个微信嘛 想用分身大师再登录个微信,为什么填写的还是原来手机号,这样用的不就是同一个微信嘛一个微信软件不能同时登陆两个微信账号;
- 下一篇
北美贸易协定对美国的影响 我学的国际经济与贸易,想去美国读研,大虾们建议一下有哪些专业可申请,考GMAT还是GRE?!
我学的国际经济与贸易,想去美国读研,大虾们建议一下有哪些专业可申请,考GMAT还是GRE? 我学的国际经济与贸易,想去美国读研,大虾们建议一下有哪些专业可申请,考GMAT还是GRE?原则上什么都行学金