模拟动态线程池提交任务, 查看运行以及监控数据.

pull/39/head
chen.ma 3 years ago
parent fe66c716b5
commit f49e41d370

@ -1,5 +1,6 @@
package cn.hippo4j.example.inittest; package cn.hippo4j.example.inittest;
import cn.hippo4j.starter.wrapper.DynamicThreadPoolWrapper;
import cn.hutool.core.thread.ThreadUtil; import cn.hutool.core.thread.ThreadUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@ -7,6 +8,7 @@ import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct; import javax.annotation.PostConstruct;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.Random; import java.util.Random;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.ThreadPoolExecutor;
/** /**
@ -19,27 +21,38 @@ import java.util.concurrent.ThreadPoolExecutor;
@Component @Component
public class RunStateHandlerTest { public class RunStateHandlerTest {
@Resource
private DynamicThreadPoolWrapper messageCenterDynamicThreadPool;
@Resource @Resource
private ThreadPoolExecutor dynamicThreadPoolExecutor; private ThreadPoolExecutor dynamicThreadPoolExecutor;
@PostConstruct @PostConstruct
@SuppressWarnings("all") @SuppressWarnings("all")
public void runStateHandlerTest() { public void runStateHandlerTest() {
log.info("Test thread pool runtime state interface, The rejection policy will be triggered after 30s..."); log.info("Test thread pool runtime state interface...");
// 启动动态线程池模拟运行任务
runTask(messageCenterDynamicThreadPool.getExecutor());
// 启动动态线程池模拟运行任务
runTask(dynamicThreadPoolExecutor);
}
private void runTask(ExecutorService executorService) {
new Thread(() -> { new Thread(() -> {
ThreadUtil.sleep(5000); ThreadUtil.sleep(5000);
for (int i = 0; i < Integer.MAX_VALUE; i++) { for (int i = 0; i < Integer.MAX_VALUE; i++) {
try { try {
dynamicThreadPoolExecutor.execute(() -> { executorService.execute(() -> {
log.info("Thread pool name :: {}, Executing incoming blocking...", Thread.currentThread().getName());
try { try {
int maxRandom = 10; int maxRandom = 10;
int temp = 2; int temp = 2;
Random random = new Random(); Random random = new Random();
// Assignment thread pool completedTaskCount // Assignment thread pool completedTaskCount
if (random.nextInt(maxRandom) % temp == 0) { if (random.nextInt(maxRandom) % temp == 0) {
Thread.sleep(10241024); Thread.sleep(1000);
} else { } else {
Thread.sleep(3000); Thread.sleep(3000);
} }
@ -51,7 +64,6 @@ public class RunStateHandlerTest {
// ignore // ignore
} }
log.info(" >>> Number of dynamic thread pool tasks executed :: {}", i);
ThreadUtil.sleep(500); ThreadUtil.sleep(500);
} }

Loading…
Cancel
Save