並行執行器

工做中出現某些代碼須要並行執行以提升程序運算速度的狀況,因此寫了一個小工具。git

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");
	}
}

結果:github

1
3
e2
4
main continue
2

項目在GitHub上,點這裏函數

相關文章
相關標籤/搜索