控制台上的光标似乎有点滞后

时间:2012-10-05 17:59:11

标签: java multithreading cursor lag

我一直在用java写一个基于文本的视频游戏(我是java,btw的新手),它没有我一直希望的性能,特别是语音。我希望文本看起来像是在讲话的人(我不希望它一次出现,只是逐个字符)。我用这段代码实现了效果:

void speak(String speak){
    for(int x = 0; x < speak.length(); x++){
        System.out.print(speak.charAt(x));
        pause(talkSpeed);
    }
}
talkSpeed是对象谈话的速度。 pause是我用来使Thread.sleep更容易的函数。太懒了写试试抓了所有的时间。这个代码我唯一的问题是它不能很顺利地打印到控制台。看起来很生涩,就像它有点落后一样。它看起来像逐字打印,而不是逐字逐句打印。我不明白为什么,这是一段相当简单的代码。也许它是暂停,我应该使用Thread.sleep。此外,我想知道我如何使光标跟随文本。

或者我应该在c ++中重写一下以获得性能提升?我知道大约相同数量的C ++

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

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

1 个答案:

答案 0 :(得分:2)

我相信System.out是缓冲的,尝试在暂停前调用System.out.flush()。