ScheduledThreadPoolExecutor 线程池调度 使用
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);
} }
ScheduledThreadPoolExecutor 线程池调度 使用的更多相关文章
- 线程池之ScheduledThreadPoolExecutor线程池源码分析笔记
1.ScheduledThreadPoolExecutor 整体结构剖析. 1.1类图介绍 根据上面类图图可以看到Executor其实是一个工具类,里面提供了好多静态方法,根据用户选择返回不同的线程池 ...
- ScheduledThreadPoolExecutor线程池scheduleAtFixedRate和scheduleWithFixedDelay的区别
ScheduledFuture<?> result = executor.scheduleAtFixedRate(task,2, 5, TimeUnit.SECONDS); 在延迟2秒之后 ...
- Java并发包线程池之ScheduledThreadPoolExecutor
前言 它是一种可以安排在给定的延迟之后执行一次或周期性执行任务的ThreadPoolExecutor.因为它继承了ThreadPoolExecutor, 当然也具有处理普通Runnable.Calla ...
- 线程池ThreadPool及Task调度死锁分析
近1年,偶尔发生应用系统启动时某些操作超时的问题,特别在使用4核心Surface以后.笔记本和台式机比较少遇到,服务器则基本上没有遇到过. 这些年,我写的应用都有一个习惯,就是启动时异步做很多准备工作 ...
- Java线程池管理及分布式Hadoop调度框架搭建
平时的开发中线程是个少不了的东西,比如tomcat里的servlet就是线程,没有线程我们如何提供多用户访问呢?不过很多刚开始接触线程的开发工程师却在这个上面吃了不少苦头. 怎么做一套简便的线程开发模 ...
- Java - "JUC线程池" ThreadPoolExecutor原理解析
Java多线程系列--“JUC线程池”02之 线程池原理(一) ThreadPoolExecutor简介 ThreadPoolExecutor是线程池类.对于线程池,可以通俗的将它理解为"存 ...
- 深入浅出 Java Concurrency (29): 线程池 part 2 Executor 以及Executors[转]
Java里面线程池的顶级接口是Executor,但是严格意义上讲Executor并不是一个线程池,而只是一个执行线程的工具.真正的线程池接口是ExecutorService. 下面这张图完整描述了线程 ...
- 细说JUC的线程池架构
前言 线程的创建是需要JVM和OS(操作系统)相互配合的,一次的创建要花费许多的资源. 1.首先,JVM要为该线程分配堆栈和初始化大量内存块,栈内存至少是1MB. 2.其次便是要进行系统的调用,在OS ...
- java多线程系类:JUC线程池:02之线程池原理(一)
在上一章"Java多线程系列--"JUC线程池"01之 线程池架构"中,我们了解了线程池的架构.线程池的实现类是ThreadPoolExecutor类.本章,我 ...
随机推荐
- 使用Spring Loader或者Jrebel实现java 热部署
.其实JRebel和Spring-Loaded就是一个开发环境下的利器,skip build and redeploy process,大大提升了工作效率!而非生产环境的利器...因为线上reload ...
- MySQL重装
一.在控制面板中卸载程序 二.找到安装目录,删除掉剩余的文件,一般在C:\Program Files\MySQL\和C:\ProgramData\MySQL\ 三.清理注册表,在“运行”里键入rege ...
- elasticsearch搜索引擎学习1
用elasticsearch-river-jdbc同步数据到elasticsearch 用elasticsearch-river-jdbc同步数据到elasticsearch 1 插件安装 插件的g ...
- poj3422
题解: 先奖每一个点裂开来 然后在见图 代码: #include<cstdio> #include<cmath> #include<cstring> #includ ...
- easyui combotree 异步树 前端写法js
简要说下使用场景: combotree下拉框第一次加载时,请求一个接口,页面上展示顶层节点们(可以理解为最顶层的节点,比如所有的一级公司): 当点击其中一个节点前面的小三角展开时,再次请求服务器接口( ...
- 回首C语言关键字(~回首向来萧瑟处~)
开篇废话: 本文意在回顾 C 语言中的关键字,整理文件发现当时做的这些笔记还是蛮用心的,有临摹 前辈的足迹也有自己的理解和体会.时至今日2018已经跨过一半,对不起过去半年,今天 拿这篇关键字开篇,开 ...
- Swift 标签控制器(tabbar添加提醒和控制器)
// Override point for customization after application launch. //初始化window, 大小为设备物理大小 self.window = U ...
- kubernetes下的Nginx加Tomcat三部曲之三:实战扩容和升级
本章是<kubernetes下的Nginx加Tomcat三部曲系列>的终篇,今天咱们一起在kubernetes环境对下图中tomcat的数量进行调整,再修改tomcat中web工程的源码, ...
- BZOJ3123: [Sdoi2013]森林(启发式合并&主席树)
3123: [Sdoi2013]森林 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 4813 Solved: 1420[Submit][Status ...
- 《DSP using MATLAB》示例 Example 9.8
代码: %% ------------------------------------------------------------------------ %% Output Info about ...