java - Java 2D 游戏有多少个线程?

标签 java multithreading swing 2d-games

我是新来的,我学习java已经两个月了。我实际上正在学习线程和多线程,我有一个小问题。为了练习我编写一个简单的 2D 卡牌游戏(如 MTG 或 HearthStone)。为了这一刻我做了很多事情,但我想知道我必须使用多少线程才能创建最高效的应用程序并养成良好的习惯。

所以,现在我在 EventQueue 中有 JFrame,以及扩展 JPanel 和实现 Runnable 的其他类,这是我的 Board,并且具有游戏循环(使用 init()、uptade() 和 repaint() 以及鼠标监听器方法) .

对于简单的游戏来说这有好处吗?或者也许板上的每张卡片都应该有一个单独的线程来显示卡片信息、重新绘制等?

我很感激每一个帮助, 干杯!

最佳答案

线程会大大增加程序的复杂性,因此请谨慎使用。 (这也是系统资源的一大 promise ,但这不太可能成为您的大问题)

我建议首先让您的应用程序成为单线程。如果您发现游戏逻辑花费的时间太长,导致 UI 缓慢且无响应,您可能会考虑在单独的线程上运行 UI 和游戏逻辑,但这不太可能(除非您的纸牌游戏很严重 复杂)。 实际上,开始考虑多线程模型的地方是当您有多个客户端连接时 - 那么每个客户端都需要自己的线程,并且您必须处理它们之间的交互。

我在 Java 中看到的关于线程的最佳建议是,您几乎永远不需要显式处理它们。我建议,如果您想在应用程序中加入一些多线程,请将其作为培训练习,但请注意,这可能不是您在生产中要做的事情。

关于java - Java 2D 游戏有多少个线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32169274/

相关文章:

java - GWT 可以吗?如果是这样,我们可以使用的最好的后端 Java 技术是什么?

Java 8 stream API orElse 用法

c++ - EvtSubscribe 和线程

c# - 异步读同步

java - 带 TexturePaint 的图标抛出 InternalError : Surface not cachable

java - dl4j - paragraph2vec 中的标签机制是什么?

java - Java 计算公因数表

c++ - 多线程/ fork 服务器守护进程的模型

Java Swing 和键绑定(bind) - 重新绘制我的光标

java - 什么是有效容器?