1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- package J20250801.homework;
- import java.util.concurrent.*;
- /**
- * @author WanJl
- * @version 1.0
- * @title Demo06
- * @description
- * @create 2025/8/1
- */
- public class Demo06 {
- private static int successCount=0;
- public static void main(String[] args) {
- ThreadPoolExecutor poolExecutor=new ThreadPoolExecutor(
- 20, //核心线程数
- 50,//最大线程数
- 60l,//线程空余最大存活时间
- TimeUnit.SECONDS,//时间单位
- new LinkedBlockingQueue<>(500), //工作队列
- Executors.defaultThreadFactory(),//线程工厂
- new ThreadPoolExecutor.DiscardOldestPolicy()//拒绝策略,扔掉最久的,加入当前的
- );
- //记录开始时间
- long startTime = System.currentTimeMillis();
- //提交1000个下单请求
- for (int i = 0; i < 1000; i++) {
- //用户id
- final int userId=i+1;
- poolExecutor.submit(()->{
- try {
- //模拟下单处理耗时50ms
- System.out.println("用户"+userId+"下单中...");
- Thread.sleep(50);
- successCount++;
- } catch (InterruptedException e) {
- Thread.currentThread().interrupt();
- System.out.println("用户"+userId+"下单被中断");
- }
- });
- }
- //关闭线程池
- poolExecutor.shutdown();
- //等待所有任务完成
- try {
- if(!poolExecutor.awaitTermination(1,TimeUnit.MINUTES)){
- poolExecutor.shutdownNow();
- }
- } catch (InterruptedException e) {
- poolExecutor.shutdownNow();
- }
- //记录结束时间
- long endTime = System.currentTimeMillis();
- long time=endTime-startTime;
- System.out.println("------处理结果统计------");
- System.out.println("总耗时:"+time+"毫秒");
- System.out.println("成功处理的订单数为:"+successCount);
- System.out.println("被拒绝的订单数为:"+(1000-successCount));
- }
- }
|