奇怪的尝试/捕获说明

时间:2015-09-14 17:07:17

标签: java

我在网络上,在游戏代码中找到了这些说明。但是,我不明白它是如何工作的。

start = System.nanoTime();
elapsed = System.nanoTime() - start;
        wait = (100/60) - (elapsed / 1000000);

        if(wait < 0)
        {
            wait = 4;
        }

        try
        {
            Thread.sleep(wait);
        } 

        catch (InterruptedException e)
        {
            e.printStackTrace();
        }

我知道Thread.sleep(wait)使线程在开始之前以毫秒为单位等待wait。但在这种情况下,为什么要烦恼所有这些指示呢?我尝试放Thread.sleep(0),游戏速度快20倍(所有物体移动得太快)。

这些说明如何运作?

提前致谢。

1 个答案:

答案 0 :(得分:0)

基本上,Thread.Sleep()所做的是冻结代码运行的线程,在这种情况下,冻结应用程序的主线程。 想想它就像你的程序一样:

  

做点什么....

     

等待X时间(“冻结”程序执行)

     

做点别的事。

try/catch操作与您看到的延迟无关。 基本上,try/catch就像一个“捕手”,如果线程冻结出现问题(在这种情况下,可能出错的是“某人”(即另一个线程)会试图中断冻结线程)。

在这种情况下,使用简单的单词,它将“跳转”并执行catch块中编写的代码,防止程序崩溃(将其视为保护层)。

如果你删除了try / catch块,那么在上面描述的异常情况下,没有什么可以防止系统崩溃,你的程序会爆炸(好吧,它不会,不要惊慌失措。:P )。