修复删除验证服务器时可能出现ConcurrentModificationException
初始化块执行时字段并不一定都完成了初始化,应当避免使用。 利用ConcurrentHashMap的弱一致性防止迭代中删除账户造成ConcurrentModificationException。
This commit is contained in:
@@ -42,6 +42,7 @@ import java.net.InetSocketAddress;
|
|||||||
import java.net.PasswordAuthentication;
|
import java.net.PasswordAuthentication;
|
||||||
import java.net.Proxy;
|
import java.net.Proxy;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@@ -62,13 +63,11 @@ public class Settings {
|
|||||||
|
|
||||||
public static final Settings INSTANCE = new Settings();
|
public static final Settings INSTANCE = new Settings();
|
||||||
|
|
||||||
private Settings() {}
|
|
||||||
|
|
||||||
private final Config SETTINGS = initSettings();
|
private final Config SETTINGS = initSettings();
|
||||||
|
|
||||||
private final Map<String, Account> accounts = new HashMap<>();
|
private final Map<String, Account> accounts = new ConcurrentHashMap<>();
|
||||||
|
|
||||||
{
|
private Settings() {
|
||||||
loadProxy();
|
loadProxy();
|
||||||
|
|
||||||
for (Iterator<Map<Object, Object>> iterator = SETTINGS.getAccounts().iterator(); iterator.hasNext(); ) {
|
for (Iterator<Map<Object, Object>> iterator = SETTINGS.getAccounts().iterator(); iterator.hasNext(); ) {
|
||||||
|
|||||||
Reference in New Issue
Block a user