使用线程作为"会话"

Ele*_*ist 0 java database multithreading mud

我正在开发一个基于文本的游戏MUD.我已准备好程序的基本功能,现在我想允许一次连接多个客户端.我计划使用线程来实现这一目标.

在我的游戏中,我需要存储每个玩家的当前位置或健康点等信息.我可以把它放在数据库中,但是因为它会很快变化,有时候每一秒都会变得很低效(我是对的吗?).

我的问题是:线程可以表现为"会话",即保存每个用户独有的一些数据吗?

如果是的话,你能指导我一些我可以用来帮助我了解它是如何工作的资源吗?

如果不是,你有什么建议?数据库是一个不错的选择还是你会推荐其他东西?

干杯,Eleeist

Dav*_*rtz 5

是的,他们可以,但这是一种令人难以置信的愚蠢做事方式.首先,它会永久锁定您的"每个客户端一个线程"模型.另一方面,实现用户之间的交互很困难(甚至可能不可能),我相信你的MUD有.

相反,有一个存储用户的某种集合,每个用户都有数据.将持久数据保存到数据库,但不需要在每次更改时更新临时数据.

处理此问题的一种方法是在每个用户中使用"已更改"布尔值.对用户进行重要更改时,请立即将其写入数据库.但如果这是一个例行的非关键变化,只需设置"已更改"标志即可.然后每隔一段时间就有一个线程,并将更改的用户写入数据库(并清除"已更改"标志).

当然,请使用适当的同步!