修复删除验证服务器时可能出现ConcurrentModificationException

初始化块执行时字段并不一定都完成了初始化,应当避免使用。
利用ConcurrentHashMap的弱一致性防止迭代中删除账户造成ConcurrentModificationException。
This commit is contained in:
yushijinhun
2018-06-02 19:38:03 +08:00
parent bbe584bd91
commit 60a140efb3

View File

@@ -42,6 +42,7 @@ import java.net.InetSocketAddress;
import java.net.PasswordAuthentication;
import java.net.Proxy;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.logging.Level;
import java.util.stream.Collectors;
@@ -62,13 +63,11 @@ public class Settings {
public static final Settings INSTANCE = new Settings();
private Settings() {}
private final Config SETTINGS = initSettings();
private final Map<String, Account> accounts = new HashMap<>();
private final Map<String, Account> accounts = new ConcurrentHashMap<>();
{
private Settings() {
loadProxy();
for (Iterator<Map<Object, Object>> iterator = SETTINGS.getAccounts().iterator(); iterator.hasNext(); ) {