java - 控制台上的光标似乎很滞后

标签 java multithreading cursor lag

我一直在用java编写一个基于文本的视频游戏(顺便说一句,我是java的新手),它没有达到我一直希望的性能,特别是语音。我希望文本显示得就像人正在说话一样(我不希望它一次全部显示,只是一个字符一个字符地显示)。我用这段代码实现了效果:

void speak(String speak){
    for(int x = 0; x < speak.length(); x++){
        System.out.print(speak.charAt(x));
        pause(talkSpeed);
    }
}

talkSpeed 是对象的说话速度。暂停是我为使 Thread.sleep 更容易而创建的函数。懒得一直写try catch。我对这段代码的唯一问题是它不能非常顺利地打印到控制台。看起来很生涩,好像有点滞后。看起来它是逐字打印世界,而不是逐字打印。我不明白为什么,这是一段相当简单的代码。也许是暂停,我应该使用 Thread.sleep。另外,我想知道如何让光标跟随文本。

或者我应该用 C++ 重写它以获得性能提升?我知道大约相同数量的 C++

void pause(double time){
    long y = (long) (1000 * time);
    try {
        Thread.sleep(y);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
}

有人索要暂停功能的代码,所以这里是

最佳答案

我相信 System.out 已被缓冲,请尝试在暂停之前调用 System.out.flush()。

关于java - 控制台上的光标似乎很滞后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12751620/

相关文章:

java - 执行 org.apache.maven.plugins :maven-surefire-plugin:2. 14.1:test: org/junit/runner/notification/RunListener 时缺少必需的类

c++ - 在 Win32 上如何将线程移动到另一个 CPU 核心?

python - 使用python多线程不断获取输入

c++ - 如何处理多个源队列消息类型

android - 如何检查列中是否存在特定值?

sql - 游标与更新

java - 使用 JVisualVM 监控 Docker 上的 Glassfish 4

java - 这是好的设计吗 : using a pure abstract class to facilitate the use of factory method

android - 在其适配器上使用 changeCursor() 后,ListView 不会刷新

java - 为 Scanner 方法编写模式