如何创建单个线程的冷却时间

时间:2016-10-26 21:47:36

标签: java java-threads

我找到了制作单线程冷却但被卡住的方法。 在管理冷却时间的班级中,我创建了一个:

private HashMap<UUID,Integer> players = new HashMap<>();

//UUID = Player UUID
//Integer = Time in cooldown (Seconds)

public void run(){
for(UUID player : players){
    //WHAT I NEED TO DO HERE?
    if(//Time == 0){
      players.remove(player);
      }
   }
}

没有使用IDE希望我没有错过eclipse会发现的错误。

但是如何获得整数并将其保存一秒呢?

1 个答案:

答案 0 :(得分:0)

TimeUnit用于延迟进程,因为它可以按照以下方式使用:

TimeUnit.SECONDS.sleep(1);

这会将当前线程延迟一秒。

不会建议使用它,因为你的情况听起来更像是一个线程在后台工作而你想等到它完成了!因此,请使用可在(while)循环中使用的新功能isAlive

修改

如果你确实希望从实例上的另一个线程延迟线程,那么我建议使用sleep method

示例:

myThread.sleep(1000);

这会将myThread延迟一秒。

编辑#2

要更改HashMap的某个键的值,请使用putget方法。

示例:

// Get the time of a player and subtract it by one
Integer value = players.get(player) - 1;
// Update the value
players.put(player, value);

// If the time runs out, than delete the player
if (value == 0){
    players.remove(player);
}