gpt4 book ai didi

java - 创建定时器循环最被动的方式是什么?

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

对于那些需要知道的人,我正在为 CraftBukkit 编写一个插件,它是 Minecraft 的修改版本,我是一名初级 Java 程序员。我有一个我认为非常基本的问题。

我正在尝试实现一个倒计时,该倒计时执行方法以每秒向玩家发送消息,持续 20 秒。

显然,我不能简单地创建一个循环 20 秒的循环,因为该循环将卡住主线程直到完成,这是 Not Acceptable 。 (有大量游戏代码在执行)

创建被动运行或不停止主线程的循环有哪些方法?

我唯一能想到的就是创建一个新线程来运行倒计时。当然有更简单的方法来做到这一点吗?

所以你不会感到困惑,倒计时不是作为某个主循环的一部分初始化的,它是由用户命令监听器线性初始化的,但它的代码在主循环中执行。我的意思是我需要实际启动一个检查时间的循环,因为此代码只执行一次。

很抱歉,如果我没有表达清楚或没有意义。

最佳答案

我会推荐java.util.Timer如果您不使用 Swing 进行 GUI/图形(不熟悉 CraftBukkit,因此这将由您决定)。特别是,查看允许以固定时间间隔重复任务的schedule 形式。

javax.swing.Timer 类似。最大的区别(除了用于响应正在触发的计时器的接口(interface)之外)是 javax.swing.Timer 利用 EDT(事件调度线程)来运行事件。如果您使用的是 Swing GUI,则该线程已经存在并正在运行,并且您想要使用它。如果您不使用 Swing 或 AWT,那么您不需要这些额外的开销。

关于java - 创建定时器循环最被动的方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16445682/

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