处理正在运行的线程中收到的消

时间:2011-01-17 14:04:30

标签: java

我有侦听传入HTTP消息的线程,我想让其他使用我的代码的开发人员能够使用我随时收到的消息。我在一些移动操作系统中看到你可以实现类并覆盖onRecive函数来接收消息。

这是在这种情况下使用的正确架构吗?如果是的话,我怎么能实施,如果它不是最好的方法。

2 个答案:

答案 0 :(得分:1)

您可以拥有另一个开发者可以实现的接口,并在您的代码中注册,以便在收到新消息等时收到通知。有很多方法可以实现。

您可以使用内置的Observable类。或者你可以做这样的事情。

public interface Listener<T> {
    public void onEvent(T t);
}

public class Listenable<T> {
    private final List<Listener<T>> list = new CopyOnWriteArrayList<Listener<T>>();

    public void register(Listener<T> listener) {
        if (!list.contains(listener)) list.add(listener);
    }

    public void unregister(Listener<T> listener) {
        list.remove(listener);
    }

    public void onEvent(T t) {
        for (Listener<T> tListener : list) 
            tListener.onEvent(t);
    }
}

调用者可以实现Listener接口或提供一个对象。然后它将它与Listenable一起注册。可听者可以通知所有已注册的听众。

答案 1 :(得分:0)

看看Observer Pattern

您可以拥有一个名为MessageListener的界面:

public interface MessageListener{
    void onMessage(String message);
}

您图书馆的用户将创建自己的MessageListeners,并将实现onMessage方法,该方法定义收到消息时应该执行的操作。他们还会在启动之前使用您的“线程”设置(或注册)此MessageListener。

现在,只要您的线程收到消息,它就会通过调用onMessage方法通知向其注册的侦听器。