[英]Java: Iterating a BiMap - Causing Me Some Issues
Iterator<Player> iterator = plugin.inreview.keySet().iterator();
while (iterator.hasNext()) {
Player key = (Player) iterator.next();
chat.getRecipients().remove(key);
}
這引發:
java.util.NoSuchElementException
at java.util.HashMap$HashIterator.nextEntry(Unknown Source)
at java.util.HashMap$EntryIterator.next(Unknown Source)
at java.util.HashMap$EntryIterator.next(Unknown Source)
有什么想法為什么會這樣? 發生這種情況時,地圖中只有一個鍵(帶有一個值)。
而且,它一直可以工作到最近,而且我在Java文件上做了很多工作,以至於我無法找出導致這種情況的原因。 迭代此地圖時,我無法進行任何while循環,這會使事情變得更加復雜!
筆記:
Chat.getRecipients()
與plugin.inreview
HashBiMap
請給我您的任何提示和想法。
額外詳情:
java.util.NoSuchElementException
at java.util.HashMap$HashIterator.nextEntry(Unknown Source)
at java.util.HashMap$EntryIterator.next(Unknown Source)
at java.util.HashMap$EntryIterator.next(Unknown Source)
at com.google.common.collect.AbstractBiMap$EntrySet$1.next(AbstractBiMap.java:314)
at com.google.common.collect.AbstractBiMap$EntrySet$1.next(AbstractBiMap.java:306)
at me.geekplaya.Judge.JudgeQuit.onPlayerQuit(JudgeQuit.java:25)
at org.bukkit.plugin.java.JavaPluginLoader$2.execute(JavaPluginLoader.java:251)
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:58)
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:339)
at net.minecraft.server.ServerConfigurationManager.disconnect(ServerConfigurationManager.java:159)
at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:650)
at net.minecraft.server.NetworkManager.b(NetworkManager.java:231)
at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:92)
at net.minecraft.server.NetworkListenThread.a(SourceFile:108)
at net.minecraft.server.MinecraftServer.h(MinecraftServer.java:471)
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:374)
at net.minecraft.server.ThreadServerApplication.run(SourceFile:417)
如您所說,如果remove
調用不是對迭代序列進行操作,則必須存在另一個線程更新plugin.inreview
。
檢查plugin.review
所有寫訪問器,並確保在線程使用此代碼讀取時無法進行任何並發更新。
請注意,這樣的錯誤可能長時間不會出現,然后由於其他影響線程時間的更改而突然變成嚴重的問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.