Skip to content

Commit 3238108

Browse files
author
Nothere998
authored
Merge pull request #4 from Nothere998/Nothere998-patch-3
Create schedule pattern
2 parents 057cc17 + c3295a4 commit 3238108

File tree

1 file changed

+69
-0
lines changed

1 file changed

+69
-0
lines changed

schedule pattern

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
import java.util.ArrayList;
2+
import java.util.List;
3+
interface Job {
4+
void execute();
5+
}
6+
interface Trigger {
7+
boolean shouldRun();
8+
}
9+
class Scheduler {
10+
private List<Job> jobs;
11+
private List<Trigger> triggers;
12+
public Scheduler() {
13+
this.jobs = new ArrayList<>();
14+
this.triggers = new ArrayList<>();
15+
}
16+
public void addJob(Job job, Trigger trigger) {
17+
jobs.add(job);
18+
triggers.add(trigger);
19+
}
20+
public void start() {
21+
while (true) {
22+
for (int i = 0; i < jobs.size(); i++) {
23+
Job job = jobs.get(i);
24+
Trigger trigger = triggers.get(i);
25+
26+
if (trigger.shouldRun()) {
27+
job.execute();
28+
}
29+
}
30+
try {
31+
Thread.sleep(1000); // Delay for 1 second
32+
} catch (InterruptedException e) {
33+
Thread.currentThread().interrupt();
34+
}
35+
}
36+
}
37+
}
38+
class ExampleJob implements Job {
39+
@Override
40+
public void execute() {
41+
System.out.println("Executing ExampleJob at " + System.currentTimeMillis());
42+
}
43+
}
44+
class TimeBasedTrigger implements Trigger {
45+
private long lastExecutionTime;
46+
private long interval;
47+
public TimeBasedTrigger(long interval) {
48+
this.interval = interval;
49+
this.lastExecutionTime = System.currentTimeMillis();
50+
}
51+
@Override
52+
public boolean shouldRun() {
53+
long currentTime = System.currentTimeMillis();
54+
if (currentTime - lastExecutionTime >= interval) {
55+
lastExecutionTime = currentTime;
56+
return true;
57+
}
58+
return false;
59+
}
60+
}
61+
public class JobSDesign {
62+
public static void main(String[] args) {
63+
Scheduler scheduler = new Scheduler();
64+
Job exampleJob = new ExampleJob();
65+
Trigger timeBasedTrigger = new TimeBasedTrigger(5000); // Run every 5 seconds
66+
scheduler.addJob(exampleJob, timeBasedTrigger);
67+
scheduler.start();
68+
}
69+
}

0 commit comments

Comments
 (0)