如何创建单线程冷却时间

How to create a single thread cooldown

我正在寻找进行单线程冷却的方法,但卡住了。 在管理冷却时间的 class 中,我创建了一个:

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 会发现的错误。

但是我怎样才能得到整数并节省一秒呢?

TimeUnit用于延迟一个进程,用法如下:

TimeUnit.SECONDS.sleep(1);

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

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


编辑

如果您确实想在实例上延迟来自另一个线程的线程,那么我建议使用 sleep method

示例:

myThread.sleep(1000);

这将延迟 myThread 一秒。


编辑 #2

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

示例:

// 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);
}