如何创建单线程冷却时间
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);
}
我正在寻找进行单线程冷却的方法,但卡住了。 在管理冷却时间的 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);
}