package other;

import java.util.concurrent.Callable;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.ThreadFactory;
import java.util.concurrent.TimeUnit; public class TestScheduledThreadPool { public static void main(String[] args) {
MyThreadFactory threadFactory = new MyThreadFactory();
//ScheduledThreadPoolExecutor
// 继承 ThreadPoolExecutor 线程池
// 实现ScheduledExecutorService 线程调度
ScheduledExecutorService ses = Executors.newScheduledThreadPool(, threadFactory);
System.out.println("reday go."); TimeUnit unit = TimeUnit.SECONDS;
//延时任务
ses.schedule(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println(Thread.currentThread().getName() + "delay Runnable");
}
}, , unit); //延时任务 带返回值
ScheduledFuture<Integer> scheduledFuture = ses.schedule(new Callable<Integer>() {
@Override
public Integer call() throws Exception {
System.out.println(Thread.currentThread().getName() + "delay Callable");
return (int)(Math.random()*);
}
}, , unit);
try {
System.out.println(scheduledFuture.get());
} catch (Exception e1) {
e1.printStackTrace();
} //循环执行
//以开始时间 计算 下一次任务开始时间, 如果任务执行超出循环时间,则会任务执行完后再次执行
/*ses.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println(Thread.currentThread().getName() + " scheduleAtFixedRate begin:" + DataThreadLoadUtil.convertToStr(new Date()));
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName() + " scheduleAtFixedRate end:" + DataThreadLoadUtil.convertToStr(new Date()));
}
}, 0, 1, unit);*/ //循环执行
//以结束时间 计算下一次执行时间
/*ses.scheduleWithFixedDelay(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println(Thread.currentThread().getName() + " scheduleWithFixedDelay begin:" + DataThreadLoadUtil.convertToStr(new Date()));
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName() + " scheduleWithFixedDelay end:" + DataThreadLoadUtil.convertToStr(new Date()));
}
}, 0, 5, unit);*/ /*for (int i = 0; i < 10; i++) {
ses.submit(new Callable<Integer>() {
@Override
public Integer call() throws Exception {
// TODO Auto-generated method stub
System.out.println(Thread.currentThread().getName() + "---------");
return (int)(Math.random()*1000);
}
});
}*/ System.out.println("==========end");
//ses.shutdown();
}
} class MyThreadFactory implements ThreadFactory {
@Override
public Thread newThread(Runnable r) {
// TODO Auto-generated method stub
System.out.println("ThreadFactory new Thread");
return new Thread(r);
} }

最新文章

  1. phpmyadmin not found
  2. SectionIndexer示例
  3. 【读书笔记】2016.11.19 北航 《GDG 谷歌开发者大会》整理
  4. Python Day7
  5. 导入excel数据到数据库
  6. mac与php环境
  7. ServiceManager 小结
  8. JavaScript---DOM文档
  9. 跳舞毯[XDU1005]
  10. HTML: a的僞類
  11. Android Material Design Ripple Effect在Android5.0(SDK=21)以下Android版本崩溃问题解决
  12. 洛谷P2738 [USACO4.1]篱笆回路Fence Loops
  13. PHP JS HTML ASP页面跳转代码 延时跳转代码 返回到上一界面并刷新 JS弹出指定大小的新窗口
  14. manifest save for self
  15. javascript for
  16. MySQL索引方法
  17. CCS设计手段——相对定位
  18. python 下划线--完美解释
  19. 007.Adding a view to an ASP.NET Core MVC app -- 【在asp.net core mvc中添加视图】
  20. 通过WebClient模拟post上传文件到服务器

热门文章

  1. 数论练习(6)——hdu A/B(逆元gcd)
  2. MarkdownPad2 在 Windows10 下 预览无法显示
  3. [转载]浏览器中输入url 并且按下回车之后发生了什么?
  4. Android 五种存储方式个人总结
  5. HTML 代码常用技巧
  6. java基础11天
  7. Cause: org.postgresql.util.PSQLException: ERROR: cached plan must not change result type的前因后果
  8. 【maven】mvn 命令
  9. jquery插件与扩展一
  10. load/domContentLoaded事件、异步/延迟Js 与DOM解析