java - Java中的通知系统

标签 java notifications

我正在为我的系统构建一个 API,它接收 UDP 消息并解析它们。现在我需要将这些更改通知开发人员。

目前我有两种实现方式,但我不确定哪一种更好,是否还有其他选择。

解决方案 A ArrayBlockingQueue

它似乎在空闲时不消耗任何电量。在 API 方面,我会创建一个静态数组并在我想通知新更改时向其添加消息。因此,在开发人员方面,我可以将其放入线程中以监听任何新消息。用户将获取消息,检查其类型和属性等。

解决方案 B 回调

我相信这个解决方案会更漂亮、更有条理。我只是创建一个包含所有可能的通知类型的接口(interface),然后开发人员可以实现这个接口(interface)。在 API 端,我有一个相同监听器的 HashMap ,以便 API 可以通知超过 1 个相同类型的监听器。

还有什么想法或建议吗?

最佳答案

对于任何基于事件的系统,异步解决方案都是首选。正如您所注意到的,它比阻塞解决方案更轻量级,阻塞解决方案每个事件接收器都需要一个线程。所以方案B更受青睐。

不过,需要注意的一件事是线程问题:您将在自己的线程中调用回调,因此回调实现者必须准备好处理该问题。回调代码不能假定它在任何特定线程上执行;它也可以每次在不同的线程上执行。

关于java - Java中的通知系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16650334/

相关文章:

Android SDK安装失败,找不到java版本

Android - DeleteIntent,如何使用?

windows - 我们应该将哪个 "platform"用于通知程序组件?

java - 为什么 isEmpty() 在 BufferedReader 中跳过很多行?

java - Maven 使用包中的资源构建 Jar

notifications - Swift 和 NSUserNotification - 没有横幅或警报,但会静默添加到通知列表中

android - 应用程序在后台时创建通知,Android

java - Oracle 数据库在到达列中指定的时间时发送通知/调用 java 方法

java - 将对象类型声明为 String

java - @Entity和@Embeddable之间的继承