Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @Singleton
- public class TaskRunner {
- public void doTask () {
- try {
- System.out.println("performs scheduled task");
- } catch (Exception e) {
- logger.error("Error performing task. failed with error: {}", e);
- }
- }
- }
- @Singleton
- public class TaskScheduler {
- private final Runnable runnable;
- private final ScheduledExecutorService executorService;
- private static final Logger logger = LoggerFactory.getLogger(TaskScheduler.class);
- @Inject
- public TaskScheduler(TaskRunner taskRunner, int initialDelay, int period, String timeUnits) {
- this.executorService = Executors.newScheduledThreadPool(1);
- this.runnable = taskRunner::doTask;
- this.scheduledFuture = this.executorService.scheduleAtFixedRate(this.runnable, initialDelay, period,
- TimeUnit.valueOf(timeUnits));
- }
- public static void main(String[] args) {
- TaskRunner taskRunner = new TaskRunner();
- new TaskScheduler(taskRunner);
- }
- }
- ScheduledThreadPoolExecutor executor = (ScheduledThreadPoolExecutor) schedulerService;
- this.queueSize = executor.getQueue().size();
- this.remainingCapacity = executor.getQueue().remainingCapacity();
- this.terminated = schedulerService.isTerminated();
- this.shutdown = schedulerService.isShutdown();
- this.taskCount = executor.getTaskCount();
- this.activeTaskCount = executor.getActiveCount();
- this.completedTaskCount = executor.getCompletedTaskCount();
- this.keepAliveTime = executor.getKeepAliveTime(TimeUnit.SECONDS);
- this.coreThreadTimeOut = executor.allowsCoreThreadTimeOut();
- this.cancelled = scheduledFuture.isCancelled();
- this.delay = scheduledFuture.getDelay(TimeUnit.MINUTES);
- {
- "queueSize": 1,
- "remainingCapacity": 2147483647,
- "terminated": false,
- "shutdown": false,
- "taskCount": 2,
- "activeTaskCount": 0,
- "completedTaskCount": 1,
- "keepAliveTime": 0,
- "coreThreadTimeOut": false,
- "periodic": true,
- "cancelled": false
- }
- {
- "queueSize": 0,
- "remainingCapacity": 2147483647,
- "terminated": false,
- "shutdown": false,
- "taskCount": 2,
- "activeTaskCount": 0,
- "completedTaskCount": 2,
- "keepAliveTime": 0,
- "coreThreadTimeOut": false,
- "periodic": true,
- "cancelled": false
- }
Add Comment
Please, Sign In to add comment