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.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;
|
||||||
|
|
||||||
|
|||||||
@@ -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();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
@@ -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}, 暂未使用.
|
* 同 {@link TaskThreadFactory}, 暂未使用.
|
||||||
Reference in New Issue
Block a user