【问题标题】:Is Executors.newSingleThreadScheduledExecutor() applicable for multiple objects?Executors.newSingleThreadScheduledExecutor() 是否适用于多个对象?
【发布时间】:2020-06-21 22:31:48
【问题描述】:

我正在制作一个小游戏,其中宇宙飞船以 x 秒的间隔发射。

在这种方法中,我会生成敌人可以发射的激光。为了计时他们的投篮 我正在使用

Executors.newSingleThreadScheduledExecutor(); 

但我不确定当棋盘上同时可以有多艘敌方飞船时这是否正确。 (因为它使用一个线程,然后在再次使用该线程执行该任务之前等待 x 秒)。

总结如下:这是为多个对象计时的正确方法,还是一次只对一个对象有效。

【问题讨论】:

    标签: java multithreading methods synchronization scheduledexecutorservice


    【解决方案1】:

    还有一些性能更优化的版本,但这种方法一开始就很好。

    ScheduledFuture<?> future = s.scheduleAtFixedRate(shoot, 0, enemy.getRate(), TimeUnit.SECONDS); 
    

    将立即安排一次,然后每隔getRate() 秒安排一次,直到您致电future.cancel()

    在一个时刻只评估一个镜头,如果计算速度相当快,那很好,并且您不要在Runnable 中调用Thread.sleep()

    【讨论】:

      猜你喜欢
      • 2016-01-25
      • 2011-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-03
      • 1970-01-01
      相关资源
      最近更新 更多