package com.hao.job;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
/**
* Created by user on 2016/4/12.
*/
public class TaskTracker {
private int poolSize;
private Class<?> clazz;
private ScheduledExecutorService scheduledExecutorService = Executors.newScheduledThreadPool(poolSize);
public TaskTracker(int poolSize) {
this.poolSize = poolSize;
}
public TaskTracker(int poolSize, Class<?> clazz) {
this.poolSize = poolSize;
this.clazz = clazz;
}
public void setJobRunnerClass(Class clazz) {
this.clazz = clazz;
}
public void start() {
scheduledExecutorService.scheduleAtFixedRate(() -> {
},60,60, TimeUnit.SECONDS);
}
public Result invoke(Job job) throws Throwable {
JobRunner runner = (JobRunner) clazz.newInstance();
try {
Result result = runner.run(job);
return result == null ? null : result;
} catch (Throwable t) {
throw t;
}
}
}