我的代码:如何在独立的Java应用程序中高效地实现单例侦听器?
public class Server {
public static void main(String[] args) {
EventHandler.getInstance().start();
}
...
}
public class EventHandler implements Runnable, SomeEventListener {
private static final EventHandler INSTANCE = new EventHandler();
private static final Thread THREAD = new Thread(INSTANCE);
private static volatile boolean isRunning = false;
private EventHandler() {}
private static EventHandler getInstance() {
return INSTANCE;
}
public void start() {
isRunning = true;
THREAD.start();
}
public void stop() {
isRunning = false;
}
//Listener method that was overriden
public void onEvent(Event event) {
//...do stuff
}
public void run() {
while (isRunning) {
//Does nothing... just keeps the application running. Is this okay?
}
}
}
有也只能是EventHandler
一个实例。它工作得很好,但我有一些担心:
- 我觉得奇怪,我有一个
run()
方法,什么都不做,只能在无限循环运行。这个可以吗? - 在Windows中,当我启动这个应用程序。我的CPU使用率为25%,但在Linux上启动时,CPU使用率达到100%......为什么会这样?
我真的没有任何关于非web应用程序监听器的经验。我想知道你们是否可以提供一些意见。
你是什么意思工作正常?什么也不做? –
@SleimanJneidi我的意思是,我的应用程序按照我想要的方式工作。这只是CPU使用率困扰我,也许我猜这是由无限循环造成的...... – mpmp
那么循环体是空的吗? –