package spring.batch.controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; @RestController public class TestThreadPoolExecutorController { private ThreadPoolExecutor es = new ThreadPoolExecutor(0, 1, 5, TimeUnit.MINUTES,new LinkedBlockingQueue<>(2000)); @GetMapping("/test/thread/pool") public String exeTask() { // 获取当前线程池中线程数量 int poolSize = es.getPoolSize(); // 获取正在执行任务的线程数量 int activeCount = es.getActiveCount(); // 获取等待执行的任务数量 int queueSize = es.getQueue().size(); // getCompletedTaskCount:已经执行完成的任务数量 // getLargestPoolSize:线程池里曾经创建过的最大的线程数量。这个主要是用来判断线程是否满过。 // getActiveCount:获取正在执行任务的线程数据 // getPoolSize:获取当前线程池中线程数量的大小 System.out.println("当前空闲数量: " + (poolSize - activeCount)); System.out.println("工作数量: " + activeCount); System.out.println("总数量: " + poolSize); System.out.println("等待数量: " + queueSize); System.out.println("已经执行完成的任务数量: " + es.getCompletedTaskCount()); System.out.println("线程池里曾经创建过的最大的线程数量: " + es.getLargestPoolSize()); for(int i=0;i<20;i++) { es.execute(new Runnable() { @Override public void run() { System.out.println("线程号 : " + Thread.currentThread().getId()); try { Thread.sleep(1 * 1000); } catch (InterruptedException e) { e.printStackTrace(); } } @Override public String toString() { return "------------ test obj -------------"; } }); } // 获取当前线程池中线程数量 poolSize = es.getPoolSize(); // 获取正在执行任务的线程数量 activeCount = es.getActiveCount(); // 获取等待执行的任务数量 queueSize = es.getQueue().size(); // getCompletedTaskCount:已经执行完成的任务数量 // getLargestPoolSize:线程池里曾经创建过的最大的线程数量。这个主要是用来判断线程是否满过。 // getActiveCount:获取正在执行任务的线程数据 // getPoolSize:获取当前线程池中线程数量的大小 System.out.println("当前空闲数量: " + (poolSize - activeCount)); System.out.println("工作数量: " + activeCount); System.out.println("总数量: " + poolSize); System.out.println("等待数量: " + queueSize); System.out.println("已经执行完成的任务数量: " + es.getCompletedTaskCount()); System.out.println("线程池里曾经创建过的最大的线程数量: " + es.getLargestPoolSize()); return "back exe"; } }
java ThreadPoolExecutor
于 2023-06-10 19:31:52 首次发布