Jakich klas lub interfejsów najlepiej użyć w tym celu?
Napisanych przez Ciebie, z określoną funkcjonalnością? Bo nie bardzo rozumiem, czego oczekujesz.
Generalnie z Javy to możesz korzystać z
java.util.Timer to klasa, która umożliwia planowanie zadań do wykonania w przyszłości. java.util.TimerTask to interfejs, który musi być zaimplementowany przez klasę, która ma być wykonana jako zadanie. Chociaż z interfejsu raczej nigdy nie korzystałem,
Stworzyć sobie możesz jakiś obiekt, reprezentujący to zdarzenie... i po prostu potem stworzyć klasę, która implementuje klase TimerTask ( jest to klasa która działa na bazie wątków więc możesz to uruchomić nie tylko sekwencyjnie, ale próbować równolegle).
public class YourEvent extends TimerTask {
private Event event;
public YourEvent (Event event) {
this.event = event;
}
@Override
public void run() {
JOptionPane.showMessageDialog(null, "Przypomnienie: " + event.getName() + " odbędzie się " + event.getDate());
}
}
potem np. możesz skorzystać z racji tego że implementuje interfejs Runnable, możesz ją wydelegować do skorzystania z klasą timer i funkcją shedule
https://www.tutorialspoint.com/java/util/timer_schedule_period.htm
Event event = new Event("Przegląd samochodu", new Date(2023, 4, 10));
Timer timer = new Timer();
timer.schedule(new EventReminder(event), event.getDate().getTime() - TimeUnit.DAYS.toMillis(7))
Klasa Event- to będzie klasa która zawiera informacje o jakimś zdarzeniu, nazwę, date, itd itp.
Zauważ, że metoda shedule dla klasy timer przyjmuje jako obiekt " coś co rozszerza TimerTask, a równocześnie coś co rozszerza Runnable", czyli są wykonywane jako wątek i uruchamiane "w momencie trwania programu, innego wątku"