加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 奇怪的尝试/捕获指令

发布时间:2020-12-15 02:09:40 所属栏目:Java 来源:网络整理
导读:参见英文答案 When does Java’s Thread.sleep throw InterruptedException?????????????????????????????????????6个 我在网络上,在游戏代码中找到了这些说明.但是,我不明白它是如何工作的. start = System.nanoTime();elapsed = System.nanoTime() - start
参见英文答案 > When does Java’s Thread.sleep throw InterruptedException?????????????????????????????????????6个
我在网络上,在游戏代码中找到了这些说明.但是,我不明白它是如何工作的.

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)使线程在启动前等待ms的等待时间.但在这种情况下,为什么要烦恼所有这些指示呢?我尝试使用Thread.sleep(0),游戏速度快20倍(所有对象移动得太快).

这些说明如何运作?

提前致谢.

解决方法

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

Do something….

Wait for X time (“freeze” the program execution)

Do something else.

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

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读