gpt4 book ai didi

java - 从设计的角度来看,在 API 中后台使用 Activity 组件有多好

转载 作者:行者123 更新时间:2023-11-30 03:57:09 25 4
gpt4 key购买 nike

我有一个纯java SE环境的分布式软件系统。它有一个API,客户端可以使用它来访问服务。客户端可以是Web应用程序或桌面应用程序。

API 使用对象流通过套接字与软件进行通信。

我想构建一个服务器推送类型的系统,以便向客户端提供近乎实时的通知。

现在我需要一些带有 API 的 Activity 组件来接收这些通知并对其进行操作。客户端应该能够通过 API 注册他们的操作,例如

service.login();
service.addNotificationHandler(handler);

我的问题是,从设计的角度来看,在 API 的后台拥有 Activity 组件(线程)有多好。

如果这是一个糟糕的选择,那么对于这种情况,什么是正确的选择?

最佳答案

在 API 实现中运行后台线程没有任何问题,许多组件都会这样做(例如,以某种方式,您可以将 Tomcat 视为使用大量线程的 servlet-api 实现)。请务必考虑组件运行的环境:某些环境(例如 Java EE)通常不喜欢在服务器外部启动线程(JBoss、Glassfish),并且要求服务器以某种方式提供线程。

在任何情况下,请确保一旦客户端发出使用服务/组件完成的信号(例如通过 service.logout()),这些后台线程就会停止运行。
许多组件忘记执行此操作,这在使用实现时非常烦人。例如。 log4j 有一个从未停止过的看门狗线程,最近 MySQL 驱动程序添加了一个“废弃的连接线程”,fails to stop 。对于偶尔使用这些问题并不重要,但在服务器环境中(最好是永远运行)这些问题足够严重,需要考虑替代实现(可能功能不太完整,但不需要破解来修复) .

关于java - 从设计的角度来看,在 API 中后台使用 Activity 组件有多好,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22877887/

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