java AsyncTool
引入依赖,或者直接引入代码,依赖有时候拉不下来
引入后查看代码,注释中都有
import com.jd.platform.async.executor.Async;
import com.jd.platform.async.executor.timer.SystemClock;
import com.jd.platform.async.wrapper.WorkerWrapper;import java.util.concurrent.ExecutionException;public class Test {public static void main(String[] args) throws ExecutionException, InterruptedException {ParWorker w = new ParWorker();ParWorker1 w1 = new ParWorker1();ParWorker2 w2 = new ParWorker2();//id:任务的唯一标识。//param:任务的输入参数。//worker:任务的具体实现。//callback:任务的回调实现。//depend:任务的依赖关系,定义任务的执行顺序。//next:任务的后续任务,用于定义任务的执行顺序。WorkerWrapper<String, String> workerWrapper2 = new WorkerWrapper.Builder<String, String>().id("w2").worker(w2).callback(w2).param("2").build();WorkerWrapper<String, String> workerWrapper1 = new WorkerWrapper.Builder<String, String>().id("w1").worker(w1).callback(w1).param("1").build();WorkerWrapper<String, String> workerWrapper = new WorkerWrapper.Builder<String, String>().id("w").worker(w).callback(w).param("1110").build();long now = SystemClock.now();System.out.println("begin-" + now);Async.beginWork(1500, workerWrapper, workerWrapper1, workerWrapper2);
// Async.beginWork(800, workerWrapper, workerWrapper1, workerWrapper2);
// Async.beginWork(1000, workerWrapper, workerWrapper1, workerWrapper2);System.out.println("end-" + SystemClock.now());System.err.println("cost-" + (SystemClock.now() - now));System.out.println(Async.getThreadCount());System.out.println(workerWrapper.getWorkResult());Async.shutDown();}
}
import com.jd.platform.async.callback.ICallback;
import com.jd.platform.async.callback.IWorker;
import com.jd.platform.async.executor.timer.SystemClock;
import com.jd.platform.async.worker.WorkResult;
import com.jd.platform.async.wrapper.WorkerWrapper;import java.util.Map;public class ParWorker implements IWorker<String, String>, ICallback<String, String> {//任务中耗时操作执行的位置@Overridepublic String action(String object, Map<String, WorkerWrapper> allWrappers) {try {Thread.sleep(100);} catch (InterruptedException e) {e.printStackTrace();}System.out.println("参数="+object);return "abc";}//当执行中有异常后的默认返回值@Overridepublic String defaultValue() {return "worker1--default";}//任务开始前执行的方法@Overridepublic void begin() {//System.out.println(Thread.currentThread().getName() + "- start --" + System.currentTimeMillis());}//任务执行后的结果,可以在此处理action中的结果值@Overridepublic void result(boolean success, String param, WorkResult<String> workResult) {if (success) {System.out.println("返回的结果"+ workResult.getResult());System.out.println("callback worker1 success--" + SystemClock.now() + "----" + workResult.getResult()+ "-threadName:" +Thread.currentThread().getName());} else {System.err.println("callback worker1 failure--" + SystemClock.now() + "----" + workResult.getResult()+ "-threadName:" +Thread.currentThread().getName());}}}
import java.util.Map;public class ParWorker1 implements IWorker<String, String>, ICallback<String, String> {@Overridepublic String action(String object, Map<String, WorkerWrapper> allWrappers) {try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}return null;}@Overridepublic String defaultValue() {return "worker1--default";}@Overridepublic void begin() {//System.out.println(Thread.currentThread().getName() + "- start --" + System.currentTimeMillis());}@Overridepublic void result(boolean success, String param, WorkResult<String> workResult) {if (success) {System.out.println("callback worker1 success--" + SystemClock.now() + "----" + workResult.getResult()+ "-threadName:" +Thread.currentThread().getName());} else {System.err.println("callback worker1 failure--" + SystemClock.now() + "----" + workResult.getResult()+ "-threadName:" +Thread.currentThread().getName());}}}
import com.jd.platform.async.callback.ICallback;
import com.jd.platform.async.callback.IWorker;
import com.jd.platform.async.executor.timer.SystemClock;
import com.jd.platform.async.worker.WorkResult;
import com.jd.platform.async.wrapper.WorkerWrapper;import java.util.Map;public class ParWorker2 implements IWorker<String, String>, ICallback<String, String> {@Overridepublic String action(String object, Map<String, WorkerWrapper> allWrappers) {try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}return null;}@Overridepublic String defaultValue() {return "worker1--default";}@Overridepublic void begin() {//System.out.println(Thread.currentThread().getName() + "- start --" + System.currentTimeMillis());}@Overridepublic void result(boolean success, String param, WorkResult<String> workResult) {if (success) {System.out.println("callback worker1 success--" + SystemClock.now() + "----" + workResult.getResult()+ "-threadName:" +Thread.currentThread().getName());} else {System.err.println("callback worker1 failure--" + SystemClock.now() + "----" + workResult.getResult()+ "-threadName:" +Thread.currentThread().getName());}}}