import
java.util.PriorityQueue;
class
Task
implements
Comparable<Task> {
private
String name;
private
int
priority;
public
Task(String name,
int
priority) {
this
.name = name;
this
.priority = priority;
}
public
String getName() {
return
name;
}
public
int
getPriority() {
return
priority;
}
@Override
public
int
compareTo(Task other) {
return
Integer.compare(
this
.priority, other.priority);
}
@Override
public
String toString() {
return
"Task{"
+
"name='"
+ name + '\
''
+
", priority="
+ priority +
'}'
;
}
}
class
TaskScheduler
{
private
PriorityQueue<Task> taskQueue;
public
TaskScheduler()
{
taskQueue =
new
PriorityQueue<>();
}
public
void
addTask(Task task) {
taskQueue.offer(task);
}
public
void
executeNextTask() {
Task task = taskQueue.poll();
if
(task !=
null
) {
System.out.println(
"Executing task: "
+ task.getName());
}
else
{
System.out.println(
"No tasks left to execute."
);
}
}
}
public
class
PriorityTaskSchedulerExample {
public
static
void
main(String[] args) {
TaskScheduler scheduler =
new
TaskScheduler();
scheduler.addTask(
new
Task(
"Task 1"
,
3
));
scheduler.addTask(
new
Task(
"Task 2"
,
1
));
scheduler.addTask(
new
Task(
"Task 3"
,
2
));
scheduler.executeNextTask();
scheduler.executeNextTask();
scheduler.executeNextTask();
scheduler.executeNextTask();
}
}