java简单线程调度
来源:互联网 发布:程序员 判刑 编辑:程序博客网 时间:2024/06/07 06:13
java简单线程调度
众所周知的java并发执行非常好实现,只需要创建线程池将实例化的Runnable对象submit到线程池中就可以实现并发执行
一、创建一个或多个线程类,实现Runnable接口
class nextOutsideRunner implements Runnable{ Map<String,Object> timeMap = new HashMap<>(); String startDate; String endDate; public nextOutsideRunner(Map<String,Object> timeMap,String startDate, String endDate){ this.timeMap = timeMap; this.startDate = startDate; this.endDate = endDate; } @Override public void run() { System.out.println("justdoit"); } }
二、创建一个线程池,设置并发参数
ExecutorService exec = Executors.newCachedThreadPool();
三、实例化线程对象,提交到线程池中
Runnable nextOutsideRunner = new nextOutsideRunner (timeMap); exec.submit(setsubAreasList); //在最后一个提交的线程对象后 exec.shutdown();
那么问题来了,这样虽然实现了基本的并发执行,但是在实际使用中,多个需要并发的动作存在顺序依赖关系,我们需要手动对并发执行进行调度。
四、整理并发依赖层级,创建多个线程池
ExecutorService exec = Executors.newCachedThreadPool(); ExecutorService execOne = Executors.newCachedThreadPool(); ExecutorService execTwo = Executors.newCachedThreadPool();
创建好所有线程对象之后对每一个线程池进行判断,当第一个执行完后在执行第二个
if(exec.isTerminated()){ setNextInside = new nextInsideRunner (timeMap,startDate,endDate); execOne.submit(setNextInside);}else{ setNextInside = new nextInsideRunner (timeMap,startDate,endDate); execOne.submit(setNextInside);}
这样就实现了对存在依赖关系的并发操作的手动调度
阅读全文
0 0
- java简单线程调度
- Java线程: 线程调度
- Java线程调度ScheduledThreadPoolExecutor简单使用样例
- 简单东西-Java定时调度线程池用法
- Java线程调度
- java的线程调度
- JAVA线程的调度
- JAVA 线程调度
- java 线程 调度器
- Java线程:线程的调度-守护线程
- Java线程:线程的调度-守护线程
- Java线程:线程的调度-守护线程
- Java线程:线程的调度-守护线程
- Java线程:线程的调度-守护线程
- Java线程:线程的调度-守护线程
- Java线程:线程的调度-守护线程
- Java线程:线程的调度-守护线程
- Java线程:线程的调度-守护线程
- html5中input的date
- 你想了解的分布式--从ACID到CAP/BASE
- 章节10 集成向导
- 腾讯云多Kubernetes的多维度监控实践
- 在Java中调用带参数的存储过程
- java简单线程调度
- tp5验证码小结
- Linux用户与用户组详解
- 浅谈ARP欺骗
- Maven(二)eclipse创建maven项目
- Retrofit+RxJava学习笔记(1)
- 数据库事务隔离级别-- 脏读、幻读、不可重复读
- Linux Daemon & 单例模式 设计与实现
- 产品PRD文档撰写指南