123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- package J20250801.homework;
- import java.util.concurrent.Executors;
- import java.util.concurrent.LinkedBlockingQueue;
- import java.util.concurrent.ThreadPoolExecutor;
- import java.util.concurrent.TimeUnit;
- /**
- * @author WanJl
- * @version 1.0
- * @title Demo08
- * @description
- * @create 2025/8/1
- */
- public class Demo08 {
- private static int successCount=0; //这个值是有问题的
- private static int errorCount=0;
- public static void main(String[] args) {
- ThreadPoolExecutor poolExecutor = new ThreadPoolExecutor(
- 10,
- 20,
- 30,
- TimeUnit.SECONDS,
- new LinkedBlockingQueue<>(1000),
- Executors.defaultThreadFactory(),
- new ThreadPoolExecutor.AbortPolicy()
- );
- long start = System.currentTimeMillis();
- for (int i = 0; i < 1000; i++) {
- int x=i+1;
- poolExecutor.submit(()->{
- try {
- Thread.sleep(500); //每条模拟耗时5ms
- successCount+=100; //成功1次
- } catch (InterruptedException e) {
- errorCount+=100;
- }
- System.out.println("批次["+x+"]导入完成,成功["+successCount+"]条");
- System.out.println("批次["+x+"]导入被中断,失败["+errorCount+"]条");
- });
- }
- poolExecutor.shutdown();
- try {
- if (!poolExecutor.awaitTermination(10,TimeUnit.MICROSECONDS)){
- poolExecutor.shutdownNow();
- }
- } catch (InterruptedException e) {
- poolExecutor.shutdownNow();
- }
- long end = System.currentTimeMillis();
- long time=end-start;
- System.out.println("总耗时:"+time+"毫秒");
- System.out.println("成功["+successCount+"]条");
- System.out.println("失败["+errorCount+"]条");
- }
- }
|