gpt4 book ai didi

java - midlet 的线程安全检查变量

转载 作者:行者123 更新时间:2023-11-30 12:00:50 25 4
gpt4 key购买 nike

我正在客户端用 j2me 编写一个游戏,它连接到用 java 编写的服务器。该游戏将具有聊天功能,但作为次要功能。

对于连接到服务器的每个 midlet,都会生成一个服务器游戏线程。这些线程在它们之间进行对话,以便它们可以同步并轮流写入服务器中的一系列配置文件。现在,如果在其中一个 midlet 中写入聊天消息,它会被传递到管理套接字通信的客户端线程,并被发送到服务器。在服务器中,同一游戏的所有其他玩家都会收到通知,聊天消息也会转发给所有这些玩家。因此,每个服务器线程(但最初发送消息的用户之一)都将消息发送到它们对应的客户端线程。

我的问题来了。我如何向每个 midlet 发出信号,以便它知道有新的传入消息?

我考虑制作一个线程来轮询客户端通信线程以查看是否有任何新消息。但是,如果不中途打断它,我怎么能从 midlet 知道呢?理想情况下,我想直接读取客户端通信线程中的字符串,但该字符串可能正在写入,因此我需要一个线程来访问它并与之同步。

你们中的任何人都可以伸出援手吗?我真的不知道如何进行,看起来这应该很简单......

提前致谢

最佳答案

不幸的是,由于手机在其一生中的大部分时间通常都不会连接到互联网,因此唯一可用的推送机制是通过 PushRegistry API 的 SMS/MMS。真正推送的真正问题是服务器需要一种方法来识别客户端,而您不能依赖移动网络运营商为您的手机提供的临时 IP 地址。

如果您计划使用 HTTP 连接 channel ,则需要轮询服务器以获取聊天消息更新。但是,有一些方法可以让这种情况变得不那么糟糕。

如果您的游戏无论如何都应该定期向服务器发送数据/从服务器接收数据,您可以将聊天数据捆绑到您自己的 http 请求和回复正文中的协议(protocol)中。

从技术上讲,您可以通过使用 SMS 推送来触发 HTTP 数据检索来混合这两种方法,但这可能会变得昂贵。

关于在您的 MIDlet java 代码中正确使用 synchronized 关键字,我建议您提出一个更精确的问题,并附上代码示例,因为它是一个不同的问题域。

关于java - midlet 的线程安全检查变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1478069/

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