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