sin_404
sin_404
采纳率83.3%
2017-06-18 13:54 阅读 2.8k
已采纳

java计时器和死循环哪个好?哪个建议使用?

15

最近在写一个java的小游戏,关于循环执行游戏内一些方法,重绘游戏界面时:
本人用的while(true){thread.sleep(time);code;}的方式被idea警告。
后来想起java有个定时器的东西:timer.schedule(new TimerTask() {};
请问一下这两种方式那种好呢?
如果我需要在计时器里new线程,需要我手动杀线程吗?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

7条回答 默认 最新

  • 已采纳
    wojiushiwo945you 毕小宝 2017-06-19 01:10

    首先,你需要充分了解计时器的用法,计时器是单线程的,它默认开启了一个现场来执行你的任务。
    这是JDK后台的机制它自己开启现场,不需要你来new线程的。
    其次,如果你要用计时器的话,只需要记录这个timer对象,然后在程序结束的时候timer.cancel();取消该定时器即可。

    点赞 1 评论 复制链接分享
  • caozhy 从今以后生命中的每一秒都属于我爱的人 2017-06-18 15:43

    计时器性能更好,但是写起来稍微复杂一点。如果是非常短暂的延迟,用死循环也未尝不可。

    点赞 评论 复制链接分享
  • qq_31515997 hello.. 2017-06-19 01:05

    一般来说能不用死循环的尽量不用死循环!

    点赞 评论 复制链接分享
  • qq_27718453 庄粟 2017-06-19 07:05

    个人感觉没差吧,虽然我不懂定时器内部的实现原理,但也跑不掉循环吧,不然真想不出怎么执行重复代码的。

    线程被new 出来以后执行完run中的代码自动被回收。

    有问题请大神指出

    点赞 评论 复制链接分享
  • qq_34523482 Mr丶Guo 2017-06-19 07:06
  • mawenda403 雪中枫叶 2017-06-19 09:57

    如果你使用的是JDK1.5以上的,可以使用ScheduledThreadPoolExecutor来完成Timer的功能,这个实现起来简单,而且相比timer的缺陷进行了弥补

    点赞 评论 复制链接分享
  • ren_hui_jun 寻梦csdn 2017-08-12 03:26

    那就看你程序对时间的要求高不高,循环内处理时间长不长了。
    用死循环的话,它执行的时间不是固定的(每次执行完一次任务时间+睡眠时间)
    用计时器的话,它是每隔固定时间执行一次。

    点赞 评论 复制链接分享

相关推荐