private static void executeRunnableTask() throws InterruptedException {
ExecutorService executorService = Executors.newFixedThreadPool(2);
IntStream.range(0, 10).boxed().forEach(i->executorService.execute(new MyTask(i) {
@Override
protected void error(Throwable e) {
System.out.println(Thread.currentThread().getName()+" The no:"+i+ " failed, update status to fail");
}
@Override
protected void done() {
System.out.println(Thread.currentThread().getName()+ " The no:"+i+ " success, update status to success");
}
@Override
protected void doInit() {
// TODO Auto-generated method stub
}
@Override
protected void doExecute() {
if(i%3==0) {
int temp = i/0;
}
}
}));
// executorService.shutdown();
// executorService.awaitTermination(10, TimeUnit.SECONDS);
System.out.println("=============================");
}
private abstract static class MyTask implements Runnable{
protected final int no;
public MyTask(int no) {
super();
this.no = no;
}
@Override
public void run() {
try {
this.doInit();
this.doExecute();
this.done();
}catch (Throwable e) {
this.error(e);
}
}
protected abstract void error(Throwable e);
protected abstract void done();
protected abstract void doExecute();
protected abstract void doInit();
}
Java并发任务执行与错误处理
本文介绍了一个使用Java ExecutorService执行多个并发任务的例子,并展示了如何通过自定义Runnable类实现任务的成功、失败回调以及异常处理机制。代码中,10个任务被创建并提交到固定大小的线程池,每三个任务会触发除零异常,以此来演示错误处理流程。
3194

被折叠的 条评论
为什么被折叠?



