如何在Java中创建自定义事件处理程序?



在过去的几天里,我一直在试图弄清楚如何在Java中创建自己的事件。我希望能够像这样使用它:

public class main {
public void onTimeChange(MinuteChangeEvent event) {
//do whatever when MinuteChangeEvent fires
}
}

基本上,只要MinuteChangeEvent触发,方法onTimeChange就会被执行。但我该如何创建MinuteChangeEvent事件,以及我该如何告诉它何时开火?

为此,我还需要让我的类始终运行。我该怎么做呢?因为通常情况下,它只执行一次,仅此而已。如果一切正常,应该发生的是:无论onTimeChange方法内部是什么,每分钟都会执行一次,这是MinuteChangeEvent发生的时候,并且类应该一直运行直到手动停止。

我还没有找到任何关于如何创建这样的自定义侦听器的内容,所以任何帮助都将是感激的。

我不确定是否正确理解了你的问题。无论如何,我发送一个片段。就像user79161在他的评论中提到的,请在问题中添加更多细节。

public class TestClass{

public static void main(String args[]) {
MinuteChangeEvent event = new MinuteChangeEvent();
try {
event.start();
} catch (Exception e) {
e.printStackTrace();
}
}

public static void onTimeChange(MinuteChangeEvent event){
System.out.println(String.format("Event fired %s time(s)", 
event.getCounter()));
if(event.getCounter() >= 5){
event.setStopped(true);
}
}
static class MinuteChangeEvent implements Runnable{
private int counter = 0;
private ScheduledExecutorService executorService;
private boolean stopped = false;
@Override
public void run() {
counter++;
if(!stopped)
onTimeChange(this);
else
stop();
}
void start() throws Exception{
executorService = Executors.newSingleThreadScheduledExecutor();
executorService.scheduleAtFixedRate(this, 0, 1, TimeUnit.MINUTES);
}
private void stop(){
if (executorService != null)
executorService.shutdown();
}
int getCounter(){
return counter;
}
public void setStopped(boolean stopped) {
this.stopped = stopped;
}
public boolean isStopped() {
return stopped;
}
}

}

最新更新