diff --git a/src/main/java/io/itjun/basic/desig/patterns/single/AMapWebConfig.java b/src/main/java/io/itjun/basic/desig/patterns/single/AMapWebConfig.java
index c540719..8948344 100644
--- a/src/main/java/io/itjun/basic/desig/patterns/single/AMapWebConfig.java
+++ b/src/main/java/io/itjun/basic/desig/patterns/single/AMapWebConfig.java
@@ -8,41 +8,29 @@
*
* 用于坐标获取,静态地图等服务
*/
-public class AMapWebConfig {
+public enum AMapWebConfig {
+
+ INSTANCE;
+
private final List list;
private static final AtomicInteger counter = new AtomicInteger();
- private static volatile AMapWebConfig instance;
private AMapWebConfig() {
this.list = getList();
}
- public static AMapWebConfig getInstance() {
- if (instance == null) {
- synchronized (AMapWebConfig.class) {
- if (instance == null)
- instance = new AMapWebConfig();
- }
- }
- return instance;
- }
-
- protected AMapWebConfig(List list) {
- this.list = list;
- }
-
private List getList() {
- String value = "9a2699c11a7f8fe7382e97fe5d60ecf,7aac08b959dce9eb39b51956b23951b";
+ String value = "";
return List.of(value.split(","));
}
- protected String getNext() {
+ private String getNext() {
int index = counter.getAndIncrement() % list.size();
return list.get(index);
}
public static String getKey() {
- return AMapWebConfig.instance.getNext();
+ return AMapWebConfig.INSTANCE.getNext();
}
}
diff --git a/src/main/java/io/itjun/basic/desig/patterns/single/AMapWebConfigTest.java b/src/main/java/io/itjun/basic/desig/patterns/single/AMapWebConfigTest.java
index 802c86d..b5dc38b 100644
--- a/src/main/java/io/itjun/basic/desig/patterns/single/AMapWebConfigTest.java
+++ b/src/main/java/io/itjun/basic/desig/patterns/single/AMapWebConfigTest.java
@@ -1,32 +1,35 @@
package io.itjun.basic.desig.patterns.single;
+import io.itjun.basic.config.AppConfig;
+
import java.util.HashSet;
+import java.util.List;
import java.util.Set;
-import java.util.Timer;
-import java.util.TimerTask;
import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
public class AMapWebConfigTest {
- private static final int THREAD_COUNT = 3000;
+ private static final int THREAD_COUNT = 10000;
private static final CountDownLatch startLatch = new CountDownLatch(1);
private static final CountDownLatch finishLatch = new CountDownLatch(THREAD_COUNT);
public static void main(String[] args) throws InterruptedException {
+ ExecutorService executorService = Executors.newFixedThreadPool(THREAD_COUNT);
Set set = new HashSet<>();
for (int i = 0; i < THREAD_COUNT; i++) {
- new Thread(() -> {
+ executorService.submit(() -> {
try {
startLatch.await(); // 等待所有线程都准备好
- AMapWebConfig config = AMapWebConfig.getInstance();
+ AMapWebConfig config = AMapWebConfig.INSTANCE;
set.add(config);
- if (set.size() > 1) {
+ if (set.size() > 1)
System.out.println("stop size " + set.size());
- }
finishLatch.countDown();
} catch (InterruptedException e) {
e.printStackTrace();
}
- }).start();
+ });
}
// 让所有线程同时开始
@@ -34,6 +37,7 @@ public static void main(String[] args) throws InterruptedException {
// 等待所有线程执行完毕
finishLatch.await();
+ executorService.shutdownNow();
}
}