我有一个类,它是一个接收消息的监听器,应该一直运行(以便可以监听传入的消息),直到我明确断开它的连接。我将线程声明为setDaemon(false),但它随着调用方法的终止而终止。
请告诉我如何保持该线程活动以及如何实现Spring TaskExecutor来实现相同的功能。
提前感谢。 它是一个监听器,当有人发送消息时会接收通知...那么我该如何使它持续运行?
监听器类
public class MyListnerImpl implements Listener {
private final connectionImpl con;
public MyListnerImpl(ConnectionImpl con) {
if (con.isAuthenticated() && con.isConnected()) {
if (logger.isInfoEnabled()) {
logger.info("Initializing XmppListner:");
}
this.itsCon = con;
Thread t1 = new Thread(this);
t1.setDaemon(false);
t1.start();
}
}
public final void listnerInterfaceMethod(final Chat chat, final Message message) {
System.out.println("Message" + message);
}
public final void run() {
itsCon.getChatManager().addChatListener(new ChatManagerListener() {
public void chatCreated(final Chat chat, final boolean createdLocally) {
if (!createdLocally) {
chat.addMessageListener(itsFbml);
}
}
});
}
}
调用类只需创建其对象,然后通过Listeners构造函数启动线程。
我希望保持这个线程一直运行,直到我中断它。
ChatManager
由于某些原因删除了侦听器,否则侦听器应该永久保持注册状态。您不需要在后台线程中执行注册,并且没有理由保持该线程运行。正如Peter所指出的那样,您的侦听器代码将从不同的线程调用。 - Gray