feat: 线程工厂模板.

This commit is contained in:
2024-12-03 16:41:35 +08:00
parent a729a5d99c
commit 9900ccf1f5
5 changed files with 55 additions and 7 deletions

View File

@@ -8,12 +8,9 @@ import com.serliunx.ddns.core.Clearable;
import com.serliunx.ddns.core.Refreshable; import com.serliunx.ddns.core.Refreshable;
import com.serliunx.ddns.core.context.MultipleSourceInstanceContext; import com.serliunx.ddns.core.context.MultipleSourceInstanceContext;
import com.serliunx.ddns.core.instance.Instance; import com.serliunx.ddns.core.instance.Instance;
import com.serliunx.ddns.support.ipprovider.IpApiProvider;
import com.serliunx.ddns.support.ipprovider.Provider; import com.serliunx.ddns.support.ipprovider.Provider;
import com.serliunx.ddns.support.ipprovider.ScheduledProvider; import com.serliunx.ddns.support.ipprovider.ScheduledProvider;
import com.serliunx.ddns.support.okhttp.IPAddressResponse; import com.serliunx.ddns.support.thread.TaskThreadFactory;
import com.serliunx.ddns.support.okhttp.HttpClient;
import com.serliunx.ddns.thread.TaskThreadFactory;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;

View File

@@ -2,6 +2,7 @@ package com.serliunx.ddns.support.ipprovider;
import com.serliunx.ddns.support.Assert; import com.serliunx.ddns.support.Assert;
import com.serliunx.ddns.support.InstanceContextHolder; import com.serliunx.ddns.support.InstanceContextHolder;
import com.serliunx.ddns.support.thread.ThreadFactoryBuilder;
import java.util.concurrent.ScheduledFuture; import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.ScheduledThreadPoolExecutor; import java.util.concurrent.ScheduledThreadPoolExecutor;
@@ -57,7 +58,9 @@ public class ScheduledProvider extends AbstractProvider {
@Override @Override
public void init() { public void init() {
poolExecutor = new ScheduledThreadPoolExecutor(2); poolExecutor = new ScheduledThreadPoolExecutor(2, ThreadFactoryBuilder.builder()
.ofNamePattern("ip-provider-%s")
);
// 提交 // 提交
submitTask(); submitTask();
} }

View File

@@ -1,4 +1,4 @@
package com.serliunx.ddns.thread; package com.serliunx.ddns.support.thread;
import com.serliunx.ddns.support.Assert; import com.serliunx.ddns.support.Assert;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;

View File

@@ -0,0 +1,48 @@
package com.serliunx.ddns.support.thread;
import org.jetbrains.annotations.NotNull;
import java.util.concurrent.ThreadFactory;
import java.util.concurrent.atomic.AtomicInteger;
/**
* 线程工厂构建
*
* @author <a href="mailto:serliunx@yeah.net">SerLiunx</a>
* @version 1.0.3
* @since 2024/12/3
*/
public final class ThreadFactoryBuilder {
/**
* 实例
*/
private static final ThreadFactoryBuilder INSTANCE = new ThreadFactoryBuilder();
private ThreadFactoryBuilder() {}
/**
* 获取实例
*/
public static ThreadFactoryBuilder builder() {
return INSTANCE;
}
/**
* 线程工厂之模板名称
*
* @param pattern 名称模板(如: task-util-%s), %s将根据数量递增
* @return 线程工厂
*/
public ThreadFactory ofNamePattern(final String pattern) {
return new ThreadFactory() {
private final AtomicInteger counter = new AtomicInteger(0);
@Override
public Thread newThread(@NotNull Runnable r) {
return new Thread(r, String.format(pattern, counter.getAndIncrement()));
}
};
}
}

View File

@@ -1,4 +1,4 @@
package com.serliunx.ddns.thread; package com.serliunx.ddns.support.thread;
/** /**
* {@link TaskThreadFactory}, 暂未使用. * {@link TaskThreadFactory}, 暂未使用.