【发布时间】:2014-02-10 12:51:13
【问题描述】:
我正在尝试用 Java 制作一个简单的游戏。我想编写一个接受多个玩家的服务器。这是游戏的元数据:
玩家连接到服务器玩游戏,并指定一个数字。每个玩家只玩一场游戏。游戏只有在 4 名玩家连接时才开始或解决。如果所有玩家人数之和大于 21 则全输,否则全赢。比赛结束后,必须警告每个玩家是否输赢。
赢/输检查的算法,或接受多个客户我明白了。我的疑问是什么应该是线程(或可运行对象)和/或什么是共享资源。只需几条指导方针,我就可以实现它。
【问题讨论】:
-
您尝试了哪些操作,哪些操作没有按照您的预期工作?
-
我对并发的工作方式有点困惑。我可以用代码和修复的方式来做到这一点,就像一个游戏是一个带有玩家列表的可运行对象,当我有 4 个玩家时才开始/创建。比赛结束后,会将结果打印给每个客户端。但我真正想要的是每个客户端都是一个线程,在输入数字后保持阻塞(等待()),当所有玩家介绍他们的数字时,会被警告继续并打印结果。
-
您应该尽可能避免使用多线程。多线程会导致死锁和竞争条件,从而导致难以重现且无法重现错误。 Java 提供了New-IO,这是一种在一个线程中处理大量客户端的方法。
标签: java multithreading concurrency