diff --git a/core/src/main/java/org/dromara/dynamictp/core/support/ThreadPoolBuilder.java b/core/src/main/java/org/dromara/dynamictp/core/support/ThreadPoolBuilder.java index 3b81eaf89..5465a69e7 100644 --- a/core/src/main/java/org/dromara/dynamictp/core/support/ThreadPoolBuilder.java +++ b/core/src/main/java/org/dromara/dynamictp/core/support/ThreadPoolBuilder.java @@ -334,26 +334,99 @@ public ThreadPoolBuilder waitForTasksToCompleteOnShutdown(boolean waitForTasksTo return this; } + /** + * @param eager true or false + * @return the ThreadPoolBuilder instance + * @deprecated use {@link #eager()} instead + */ + @Deprecated public ThreadPoolBuilder eager(boolean eager) { + checkExecutorType(); this.eager = eager; return this; } + /** + * @param ordered true or false + * @return the ThreadPoolBuilder instance + * @deprecated use {@link #ordered()} instead + */ + @Deprecated public ThreadPoolBuilder ordered(boolean ordered) { + checkExecutorType(); this.ordered = ordered; return this; } + /** + * @param scheduled true or false + * @return the ThreadPoolBuilder instance + * @deprecated use {@link #scheduled()} instead + */ + @Deprecated public ThreadPoolBuilder scheduled(boolean scheduled) { + checkExecutorType(); this.scheduled = scheduled; return this; } + /** + * @param priority true or false + * @return the ThreadPoolBuilder instance + * @deprecated use {@link #priority()} instead + */ + @Deprecated public ThreadPoolBuilder priority(boolean priority) { + checkExecutorType(); this.priority = priority; return this; } + /** + * set eager type + * + * @return the ThreadPoolBuilder instance + */ + public ThreadPoolBuilder eager() { + checkExecutorType(); + this.eager = true; + return this; + } + + /** + * set ordered type + * + * @return the ThreadPoolBuilder instance + */ + public ThreadPoolBuilder ordered() { + checkExecutorType(); + this.ordered = true; + return this; + } + + /** + * set scheduled type + * + * @return the ThreadPoolBuilder instance + */ + public ThreadPoolBuilder scheduled() { + checkExecutorType(); + this.scheduled = true; + return this; + } + + /** + * set priority type + * + * @return the ThreadPoolBuilder instance + */ + public ThreadPoolBuilder priority() { + checkExecutorType(); + this.priority = true; + return this; + } + + public ThreadPoolBuilder preStartAllCoreThreads(boolean preStartAllCoreThreads) { this.preStartAllCoreThreads = preStartAllCoreThreads; return this; @@ -602,4 +675,15 @@ private ThreadPoolExecutor buildCommonExecutor(ThreadPoolBuilder builder) { executor.allowCoreThreadTimeOut(builder.allowCoreThreadTimeOut); return executor; } + + /** + * Check executor type. + */ + private void checkExecutorType() { + if (eager || ordered || scheduled || priority) { + // 抛异常 + throw new IllegalArgumentException("More than one executor type is defined"); + } + } + } diff --git a/example/example-apollo/src/main/java/org/dromara/dynamictp/example/config/ThreadPoolConfiguration.java b/example/example-apollo/src/main/java/org/dromara/dynamictp/example/config/ThreadPoolConfiguration.java index eacc4078e..ff51f8d24 100644 --- a/example/example-apollo/src/main/java/org/dromara/dynamictp/example/config/ThreadPoolConfiguration.java +++ b/example/example-apollo/src/main/java/org/dromara/dynamictp/example/config/ThreadPoolConfiguration.java @@ -105,7 +105,7 @@ public DtpExecutor eagerDtpExecutor() { .corePoolSize(2) .maximumPoolSize(4) .queueCapacity(2000) - .eager(true) + .eager() .buildDynamic(); } diff --git a/example/example-consul-cloud/src/main/java/org/dromara/dynamictp/example/config/ThreadPoolConfiguration.java b/example/example-consul-cloud/src/main/java/org/dromara/dynamictp/example/config/ThreadPoolConfiguration.java index eacc4078e..ff51f8d24 100644 --- a/example/example-consul-cloud/src/main/java/org/dromara/dynamictp/example/config/ThreadPoolConfiguration.java +++ b/example/example-consul-cloud/src/main/java/org/dromara/dynamictp/example/config/ThreadPoolConfiguration.java @@ -105,7 +105,7 @@ public DtpExecutor eagerDtpExecutor() { .corePoolSize(2) .maximumPoolSize(4) .queueCapacity(2000) - .eager(true) + .eager() .buildDynamic(); } diff --git a/example/example-etcd/src/main/java/org/dromara/dynamictp/example/config/ThreadPoolConfiguration.java b/example/example-etcd/src/main/java/org/dromara/dynamictp/example/config/ThreadPoolConfiguration.java index eacc4078e..ff51f8d24 100644 --- a/example/example-etcd/src/main/java/org/dromara/dynamictp/example/config/ThreadPoolConfiguration.java +++ b/example/example-etcd/src/main/java/org/dromara/dynamictp/example/config/ThreadPoolConfiguration.java @@ -105,7 +105,7 @@ public DtpExecutor eagerDtpExecutor() { .corePoolSize(2) .maximumPoolSize(4) .queueCapacity(2000) - .eager(true) + .eager() .buildDynamic(); } diff --git a/example/example-huawei-cloud/src/main/java/org/dromara/dynamictp/example/config/ThreadPoolConfiguration.java b/example/example-huawei-cloud/src/main/java/org/dromara/dynamictp/example/config/ThreadPoolConfiguration.java index eacc4078e..ff51f8d24 100644 --- a/example/example-huawei-cloud/src/main/java/org/dromara/dynamictp/example/config/ThreadPoolConfiguration.java +++ b/example/example-huawei-cloud/src/main/java/org/dromara/dynamictp/example/config/ThreadPoolConfiguration.java @@ -105,7 +105,7 @@ public DtpExecutor eagerDtpExecutor() { .corePoolSize(2) .maximumPoolSize(4) .queueCapacity(2000) - .eager(true) + .eager() .buildDynamic(); } diff --git a/example/example-nacos-cloud/src/main/java/org/dromara/dynamictp/example/config/ThreadPoolConfiguration.java b/example/example-nacos-cloud/src/main/java/org/dromara/dynamictp/example/config/ThreadPoolConfiguration.java index eacc4078e..ff51f8d24 100644 --- a/example/example-nacos-cloud/src/main/java/org/dromara/dynamictp/example/config/ThreadPoolConfiguration.java +++ b/example/example-nacos-cloud/src/main/java/org/dromara/dynamictp/example/config/ThreadPoolConfiguration.java @@ -105,7 +105,7 @@ public DtpExecutor eagerDtpExecutor() { .corePoolSize(2) .maximumPoolSize(4) .queueCapacity(2000) - .eager(true) + .eager() .buildDynamic(); } diff --git a/example/example-nacos/src/main/java/org/dromara/dynamictp/example/config/ThreadPoolConfiguration.java b/example/example-nacos/src/main/java/org/dromara/dynamictp/example/config/ThreadPoolConfiguration.java index eacc4078e..ff51f8d24 100644 --- a/example/example-nacos/src/main/java/org/dromara/dynamictp/example/config/ThreadPoolConfiguration.java +++ b/example/example-nacos/src/main/java/org/dromara/dynamictp/example/config/ThreadPoolConfiguration.java @@ -105,7 +105,7 @@ public DtpExecutor eagerDtpExecutor() { .corePoolSize(2) .maximumPoolSize(4) .queueCapacity(2000) - .eager(true) + .eager() .buildDynamic(); } diff --git a/example/example-polaris-cloud/src/main/java/org/dromara/dynamictp/example/config/ThreadPoolConfiguration.java b/example/example-polaris-cloud/src/main/java/org/dromara/dynamictp/example/config/ThreadPoolConfiguration.java index eacc4078e..ff51f8d24 100644 --- a/example/example-polaris-cloud/src/main/java/org/dromara/dynamictp/example/config/ThreadPoolConfiguration.java +++ b/example/example-polaris-cloud/src/main/java/org/dromara/dynamictp/example/config/ThreadPoolConfiguration.java @@ -105,7 +105,7 @@ public DtpExecutor eagerDtpExecutor() { .corePoolSize(2) .maximumPoolSize(4) .queueCapacity(2000) - .eager(true) + .eager() .buildDynamic(); } diff --git a/example/example-zookeeper-cloud/src/main/java/org/dromara/dynamictp/example/config/ThreadPoolConfiguration.java b/example/example-zookeeper-cloud/src/main/java/org/dromara/dynamictp/example/config/ThreadPoolConfiguration.java index eacc4078e..ff51f8d24 100644 --- a/example/example-zookeeper-cloud/src/main/java/org/dromara/dynamictp/example/config/ThreadPoolConfiguration.java +++ b/example/example-zookeeper-cloud/src/main/java/org/dromara/dynamictp/example/config/ThreadPoolConfiguration.java @@ -105,7 +105,7 @@ public DtpExecutor eagerDtpExecutor() { .corePoolSize(2) .maximumPoolSize(4) .queueCapacity(2000) - .eager(true) + .eager() .buildDynamic(); } diff --git a/example/example-zookeeper/src/main/java/org/dromara/dynamictp/example/config/ThreadPoolConfiguration.java b/example/example-zookeeper/src/main/java/org/dromara/dynamictp/example/config/ThreadPoolConfiguration.java index eacc4078e..ff51f8d24 100644 --- a/example/example-zookeeper/src/main/java/org/dromara/dynamictp/example/config/ThreadPoolConfiguration.java +++ b/example/example-zookeeper/src/main/java/org/dromara/dynamictp/example/config/ThreadPoolConfiguration.java @@ -105,7 +105,7 @@ public DtpExecutor eagerDtpExecutor() { .corePoolSize(2) .maximumPoolSize(4) .queueCapacity(2000) - .eager(true) + .eager() .buildDynamic(); } diff --git a/test/test-core/src/test/java/org/dromara/dynamictp/test/core/support/ThreadPoolBuilderTest.java b/test/test-core/src/test/java/org/dromara/dynamictp/test/core/support/ThreadPoolBuilderTest.java new file mode 100644 index 000000000..145d7d33f --- /dev/null +++ b/test/test-core/src/test/java/org/dromara/dynamictp/test/core/support/ThreadPoolBuilderTest.java @@ -0,0 +1,21 @@ +package org.dromara.dynamictp.test.core.support; + +import org.dromara.dynamictp.core.support.ThreadPoolBuilder; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +/** + * @author KamTo Hung + */ +public class ThreadPoolBuilderTest { + + @Test + void testBuildDynamic() { + Assertions.assertThrows(IllegalArgumentException.class,() -> ThreadPoolBuilder.newBuilder() + .threadPoolName("dtpExecutor1") + .priority() + .ordered() + .buildDynamic()); + } + +}