并行执行器

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

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上,点这里

猜你喜欢

转载自my.oschina.net/u/3039151/blog/2876544
今日推荐