文档章节

并行执行器

wanxiangming
 wanxiangming
发布于 11/15 12:01
字数 315
阅读 8
收藏 0

工作中出现某些代码需要并行执行以提高程序运算速度的情况,所以写了一个小工具。

public class Main {
	public static void main(String[] args) {
		// 你可以通过注释下面的部分代码来探索它的功能,
		// 一些重要的说明请到代码中寻找,注释写的很清楚
		new ParallelInvoker().call(invoker -> { // call方法启动执行器
			System.out.println("1");
			try {
				Thread.sleep(5000);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
			invoker.reject(new Exception("e1"));
			System.out.println("2");
		}).and(invoker -> {
			System.out.println("3");
			invoker.reject(new Exception("e2"));
			System.out.println("4");
		}).then(invoker -> { // then将前后断开,只有前面的回调全部执行完,且没有发生catched(没有调用reject),才会执行then后的函数,此处调用了reject,所以"then 开始"不会被打印
			System.out.println("then 开始");
			invoker.reject(new Exception());
			try {
				Thread.sleep(5000);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
			System.out.println("then 结束");
		}).continued().catched(e -> { // continued标识可让主线程不等待被标记点的执行
			System.out.println(e.getMessage());
		}).start();
		System.out.println("main continue");
	}
}

结果:

1
3
e2
4
main continue
2

项目在GitHub上,点这里

© 著作权归作者所有

共有 人打赏支持
wanxiangming
粉丝 1
博文 12
码字总数 16293
作品 0
东城
私信 提问
PgSQL · 答疑解惑 · PostgreSQL 9.6 并行查询实现分析

背景 随着PG9.5 项目的release,属于PG9.6的代码也陆续进入代码主干,其中最让人激动的特性并行查询终于进入了核心代码。pger们对这个新特性期待了太久的时间,代码刚提交我们就迫不及待的拿到...

阿里云RDS-数据库内核组
2016/02/06
0
0
PostgreSQL · 实现分析 · PostgreSQL 10.0 并行查询和外部表的结合

前言 大家都知道,PostgreSQL 近几大版本中加入了很多 OLAP 相关特性。9.6 的并行扫描应该算最大的相关特性。在今年发布的 10.0 中,并行扫描也在不断加强,新增了并行的索引扫描。 我们知道...

阿里云RDS-数据库内核组
2017/05/08
0
0
深入理解JVM(五)——HotSpot垃圾收集器详解

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_34173549/article/details/79612648 HotSpot虚拟机提供了多种垃圾收集器,每种收集器都有各自的特点,没有...

追风筝的猪
03/20
0
0
Java8-理解Collector

上一节学习了Java8中比较常用的内置collector的用法。接下来就来理解下collector的组成。 Collector定义 Collector接口包含了一系列方法,为实现具体的归约操作(即收集器)提供了范本。我们已...

ryan-miao
04/24
0
0
(五)-HotSpot垃圾收集器

HotSpot虚拟机提供了多种垃圾收集器,每种收集器都有各自的特点,没有最好的垃圾收集器,只有最适合的垃圾收集器.我们可以根据自己实际的应用需求选择最适合的垃圾收集器. 根据新生代和老年代各...

芥末无疆sss
2017/12/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

崛起于Springboot2.X之通讯WebSocket(40)

技术简介:Springboot2.0.3+freemaker+websocket 1、添加pom依赖 <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-bo......

木九天
5分钟前
0
0
Java常用四大线程池用法以及ThreadPoolExecutor详解

为什么用线程池? 1.创建/销毁线程伴随着系统开销,过于频繁的创建/销毁线程,会很大程度上影响处-理效率 2.线程并发数量过多,抢占系统资源从而导致阻塞 3.对线程进行一些简单的管理 在Java中...

孟飞阳
7分钟前
0
0
Netty+Websocket 实现一个简易聊天室

后台代码 /** * 服务端 */public class ChatServer {public static void main(String[] args) throws Exception {int port=8080; //服务端默认端口new ChatServer().bind...

这很耳东先生
9分钟前
0
0
一个本科学生对Linux的认知

我是一名大三的普通一本大学的软件工程的一名学生,学校开设了一些关于系统开发的课程,纸上得来终觉浅,学校的课程课时较短,想要在56个课时之内学会一些公司需要的技能,无疑是纸上谈兵,一...

linuxprobe16
11分钟前
0
0
如何选择开源许可证?

如何为代码选择开源许可证,这是一个问题。 世界上的开源许可证,大概有上百种。很少有人搞得清楚它们的区别。即使在最流行的六种----GPL、BSD、MIT、Mozilla、Apache和LGPL----之中做选择,...

吴伟祥
12分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部