diff --git a/src/main/java/com/serliunx/ddns/constant/IpProviderType.java b/src/main/java/com/serliunx/ddns/constant/IpProviderType.java
index f039f41..f607f3d 100644
--- a/src/main/java/com/serliunx/ddns/constant/IpProviderType.java
+++ b/src/main/java/com/serliunx/ddns/constant/IpProviderType.java
@@ -1,5 +1,6 @@
package com.serliunx.ddns.constant;
+import com.serliunx.ddns.support.ipprovider.IcanhazipProvider;
import com.serliunx.ddns.support.ipprovider.IpApiProvider;
import com.serliunx.ddns.support.ipprovider.Provider;
@@ -18,6 +19,11 @@ public enum IpProviderType {
*/
IP_API(new IpApiProvider()),
+ /**
+ * ip数据提供商 icanhazip
+ */
+ I_CAN_HAZ_IP(new IcanhazipProvider()),
+
;
private final Provider provider;
diff --git a/src/main/java/com/serliunx/ddns/support/SystemInitializer.java b/src/main/java/com/serliunx/ddns/support/SystemInitializer.java
index ca1e196..26760dc 100644
--- a/src/main/java/com/serliunx/ddns/support/SystemInitializer.java
+++ b/src/main/java/com/serliunx/ddns/support/SystemInitializer.java
@@ -10,7 +10,7 @@ import com.serliunx.ddns.core.context.MultipleSourceInstanceContext;
import com.serliunx.ddns.core.instance.Instance;
import com.serliunx.ddns.support.ipprovider.Provider;
import com.serliunx.ddns.support.ipprovider.ScheduledProvider;
-import com.serliunx.ddns.support.thread.TaskThreadFactory;
+import com.serliunx.ddns.support.thread.ThreadFactoryBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -166,7 +166,8 @@ public final class SystemInitializer implements Refreshable, Clearable {
private void initThreadPool(int coreSize) {
Assert.isLargerThan(coreSize, 1);
- scheduledThreadPoolExecutor = new ScheduledThreadPoolExecutor(coreSize, new TaskThreadFactory());
+ scheduledThreadPoolExecutor = new ScheduledThreadPoolExecutor(coreSize, ThreadFactoryBuilder.builder()
+ .ofNamePattern("ddns-task-%s"));
// 初始化一个线程保活
scheduledThreadPoolExecutor.submit(() -> {});
diff --git a/src/main/java/com/serliunx/ddns/support/ipprovider/ScheduledProvider.java b/src/main/java/com/serliunx/ddns/support/ipprovider/ScheduledProvider.java
index 415f744..f715360 100644
--- a/src/main/java/com/serliunx/ddns/support/ipprovider/ScheduledProvider.java
+++ b/src/main/java/com/serliunx/ddns/support/ipprovider/ScheduledProvider.java
@@ -112,7 +112,7 @@ public class ScheduledProvider extends AbstractProvider {
internalCache = internalProvider.get();
if (valueConsumer != null) {
- valueConsumer.accept(cache);
+ valueConsumer.accept(internalCache);
}
}, 0, timePeriod, TimeUnit.SECONDS);
}
diff --git a/src/main/java/com/serliunx/ddns/support/thread/TaskThreadFactory.java b/src/main/java/com/serliunx/ddns/support/thread/TaskThreadFactory.java
deleted file mode 100644
index cf4f456..0000000
--- a/src/main/java/com/serliunx/ddns/support/thread/TaskThreadFactory.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package com.serliunx.ddns.support.thread;
-
-import com.serliunx.ddns.support.Assert;
-import org.jetbrains.annotations.NotNull;
-
-import java.util.concurrent.ThreadFactory;
-import java.util.concurrent.atomic.AtomicInteger;
-
-/**
- * 简易的实例活动相关的线程工厂, 仅仅定义了线程的名称规则.
- *
- * @author SerLiunx
- * @version 1.0.0
- * @since 2024/5/15
- */
-public class TaskThreadFactory implements ThreadFactory {
-
- private final AtomicInteger count = new AtomicInteger(0);
-
- @Override
- public Thread newThread(@NotNull Runnable r) {
- Assert.notNull(r);
- return new Thread(r, String.format(getNamePattern(), count.getAndIncrement()));
- }
-
- protected String getNamePattern() {
- return "ddns-task-%s";
- }
-}
diff --git a/src/main/java/com/serliunx/ddns/support/thread/UtilThreadFactory.java b/src/main/java/com/serliunx/ddns/support/thread/UtilThreadFactory.java
deleted file mode 100644
index 5b11135..0000000
--- a/src/main/java/com/serliunx/ddns/support/thread/UtilThreadFactory.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.serliunx.ddns.support.thread;
-
-/**
- * 同 {@link TaskThreadFactory}, 暂未使用.
- *
- * @author SerLiunx
- * @version 1.0.0
- * @since 2024/5/15
- */
-public class UtilThreadFactory extends TaskThreadFactory {
-
- @Override
- protected String getNamePattern() {
- return "ddns-util-%s";
- }
-}