如何解决如何在 Java 中创建自定义事件处理程序?
在过去的几天里,我一直在研究如何用 Java 创建我自己的事件。我希望能够像这样使用它:
public class main {
public void onTimeChange(MinuteChangeEvent event) {
//do whatever when MinuteChangeEvent fires
}
}
基本上,只要 onTimeChange
触发,就会执行方法 MinuteChangeEvent
。但是我将如何创建该 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,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;
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。