Move functionality from TaskBuilder#schedule to Task#schedule and Task#scheduleForShutdown

This commit is contained in:
Matthew 2021-08-15 13:13:48 +02:00 committed by Matt Worzala
parent 3ce51ff470
commit 2674ca933e
2 changed files with 16 additions and 19 deletions

View File

@ -100,6 +100,10 @@ public class Task implements Runnable {
* Sets up the task for correct execution.
*/
public void schedule() {
Int2ObjectMap<Task> tasks = this.schedulerManager.tasks;
synchronized (tasks) {
tasks.put(getId(), this);
}
if(owningExtension != null) {
this.schedulerManager.onScheduleFromExtension(owningExtension, this);
}
@ -108,6 +112,16 @@ public class Task implements Runnable {
this.schedulerManager.getTimerExecutionService().scheduleAtFixedRate(this, this.delay, this.repeat, TimeUnit.MILLISECONDS);
}
public void scheduleForShutdown() {
Int2ObjectMap<Task> shutdownTasks = this.schedulerManager.shutdownTasks;
synchronized (shutdownTasks) {
shutdownTasks.put(getId(), this);
}
if (owningExtension != null) {
this.schedulerManager.onScheduleShutdownFromExtension(owningExtension, this);
}
}
/**
* Gets the current status of the task.
*

View File

@ -144,27 +144,10 @@ public class TaskBuilder {
*/
@NotNull
public Task schedule() {
Task task = new Task(
this.schedulerManager,
this.runnable,
this.shutdown,
this.delay,
this.repeat,
this.isTransient,
this.owningExtension);
Task task = build();
if (this.shutdown) {
Int2ObjectMap<Task> shutdownTasks = this.schedulerManager.shutdownTasks;
synchronized (shutdownTasks) {
shutdownTasks.put(task.getId(), task);
}
if (owningExtension != null) {
this.schedulerManager.onScheduleShutdownFromExtension(owningExtension, task);
}
task.scheduleForShutdown();
} else {
Int2ObjectMap<Task> tasks = this.schedulerManager.tasks;
synchronized (tasks) {
tasks.put(task.getId(), task);
}
task.schedule();
}
return task;