gpt4 book ai didi

java - 如何保持监听器线程 Activity

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:23:29 29 4
gpt4 key购买 nike

我有一个类,它是传入消息的监听器,应该永远存在(以便它可以监听传入消息),直到我明确断开与它的连接。我已将该线程声明为 setDaemon(false),但它随着调用方法终止而终止。

请告诉我如何使该线程保持 Activity 状态,还请说明如何实现 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 构造函数启动。

我想保持这个创建的线程运行直到我中断它。

最佳答案

您可以做一些比永远挂起初始线程更好的事情:

使用otherThread.join()。这将导致您正在运行的当前线程 hibernate ,直到另一个线程完成执行。正如@nanda 建议的那样,使用 ExcecutorService.shutdown() 等待线程池完成。使用 otherThread.setDaemon(false) 并简单地让您的初始线程退出。这会将您的新线程设置为用户线程。 Java 不会关闭,直到唯一运行的线程是守护线程。

synchronized(this) {
while (true) {
this.wait();
}
}

这将使当前线程在当前类的监视器上等待,直到有人调用 notify(),或者永远等待。

复制自How do you hang a thread in Java in one line?

关于java - 如何保持监听器线程 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19522788/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com