我找到了制作单线程冷却但被卡住的方法。 在管理冷却时间的班级中,我创建了一个:
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会发现的错误。
但是如何获得整数并将其保存一秒呢?
答案 0 :(得分:0)
TimeUnit用于延迟进程,因为它可以按照以下方式使用:
TimeUnit.SECONDS.sleep(1);
这会将当前线程延迟一秒。
我不会建议使用它,因为你的情况听起来更像是一个线程在后台工作而你想等到它完成了!因此,请使用可在(while
)循环中使用的新功能isAlive。
如果你确实希望从实例上的另一个线程延迟线程,那么我建议使用sleep method。
示例:
myThread.sleep(1000);
这会将myThread
延迟一秒。
要更改HashMap
的某个键的值,请使用put和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);
}