feat: 线程工厂模板.
This commit is contained in:
@@ -8,12 +8,9 @@ import com.serliunx.ddns.core.Clearable;
|
||||
import com.serliunx.ddns.core.Refreshable;
|
||||
import com.serliunx.ddns.core.context.MultipleSourceInstanceContext;
|
||||
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.ScheduledProvider;
|
||||
import com.serliunx.ddns.support.okhttp.IPAddressResponse;
|
||||
import com.serliunx.ddns.support.okhttp.HttpClient;
|
||||
import com.serliunx.ddns.thread.TaskThreadFactory;
|
||||
import com.serliunx.ddns.support.thread.TaskThreadFactory;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@ package com.serliunx.ddns.support.ipprovider;
|
||||
|
||||
import com.serliunx.ddns.support.Assert;
|
||||
import com.serliunx.ddns.support.InstanceContextHolder;
|
||||
import com.serliunx.ddns.support.thread.ThreadFactoryBuilder;
|
||||
|
||||
import java.util.concurrent.ScheduledFuture;
|
||||
import java.util.concurrent.ScheduledThreadPoolExecutor;
|
||||
@@ -57,7 +58,9 @@ public class ScheduledProvider extends AbstractProvider {
|
||||
|
||||
@Override
|
||||
public void init() {
|
||||
poolExecutor = new ScheduledThreadPoolExecutor(2);
|
||||
poolExecutor = new ScheduledThreadPoolExecutor(2, ThreadFactoryBuilder.builder()
|
||||
.ofNamePattern("ip-provider-%s")
|
||||
);
|
||||
// 提交
|
||||
submitTask();
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.serliunx.ddns.thread;
|
||||
package com.serliunx.ddns.support.thread;
|
||||
|
||||
import com.serliunx.ddns.support.Assert;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -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()));
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.serliunx.ddns.thread;
|
||||
package com.serliunx.ddns.support.thread;
|
||||
|
||||
/**
|
||||
* 同 {@link TaskThreadFactory}, 暂未使用.
|
||||
Reference in New Issue
Block a user