前言

呵呵 之前项目中会存在这样的一个情况 

选择多个文件导入 : 假设选择多个文件(一般是十个以上), 偶尔会抛出如下异常, 呵呵 和 redis 相关, 但是看异常信息 RejectedExecutionException 抛出的地方 又是在 forkjoin 库里面

呵呵 这两者有什么关联呢? 

这里就来看看, 呵呵 forkjoin 这部分的类库 有一些博大精深, 多久还得仔细看看, 说实话 看起来 还是很有难度 

我这里 只是从解决问题的角度, 看了一些, 但是 但是还有很多不明白的地方 

另外这部分类库的调试也很奇怪, 似乎是和其他的普通线程不太一样, 这部分的代码的调试 你看不到很大一部分的局部变量 

另外 就算你断点是 suspend all, 然而 断点打上了之后 你会发现 还有一部分的线程 还在跑 ?? 

这个就有点神奇了, 呵呵 希望多久能够 了解一下 这个是什么情况 

问题调试 

在业务系统中 错误信息大致如下, 当然 实际情况是 在 redisTemplate 获取响应数据的时候, 抛出来的, 确实是 在 ForkJoin 库里面抛出来的 

然后导致了业务系统这边 上传文件, 然后解析记录出错, 最终记录的错误信息为  “Unknown redis exception; nested exception is java.util.concurrent.RejectedExecutionException: Thread limit exceeded replacing blocked worker”, 但是实际上 这部分记录是期望可以正常解析的 

-- 一种情况
java.lang.RuntimeException: org.springframework.data.redis.RedisSystemException: Unknown redis exception; nested exception is java.util.concurrent.RejectedExecutionException: Thread limit exceeded replacing blocked worker
    // 省略一部分堆栈信息 
	at com.alibaba.excel.read.metadata.holder.AbstractReadHolder.notifyAfterAllAnalysed(AbstractReadHolder.java:189)
	at com.alibaba.excel.analysis.v07.XlsxSaxAnalyser.execute(XlsxSaxAnalyser.java:191)
	at com.alibaba.excel.analysis.ExcelAnalyserImpl.analysis(ExcelAnalyserImpl.java:105)
	at com.alibaba.excel.ExcelReader.readAll(ExcelReader.java:160)
    // 省略一部分堆栈信息
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)
2021-01-31 18:22:08.057 ERROR 2571 [uploadExecutor-3] c.y.f.upload.service.FileSystemService   : File parse and import failed:org.springframework.data.redis.RedisSystemException: Unknown redis exception; nested exception is java.util.concurrent.RejectedExecutionException: Thread limit exceeded replacing blocked worker, file : {"filePath":"poss机测试(1).xlsx","originalFileName":"poss机测试(1).xlsx"}
java.lang.RuntimeException: org.springframework.data.redis.RedisSystemException: Unknown redis exception; nested exception is java.util.concurrent.RejectedExecutionException: Thread limit exceeded replacing blocked worker
    // 省略一部分堆栈信息 
	at com.alibaba.excel.read.metadata.holder.AbstractReadHolder.notifyAfterAllAnalysed(AbstractReadHolder.java:189)
	at com.alibaba.excel.analysis.v07.XlsxSaxAnalyser.execute(XlsxSaxAnalyser.java:191)
	at com.alibaba.excel.analysis.ExcelAnalyserImpl.analysis(ExcelAnalyserImpl.java:105)
	at com.alibaba.excel.ExcelReader.readAll(ExcelReader.java:160)
    // 省略一部分堆栈信息 
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)


-- 另外一种情况
java.lang.RuntimeException: org.springframework.data.redis.RedisSystemException: Unknown redis exception; nested exception is java.util.concurrent.RejectedExecutionException: Thread limit exceeded replacing blocked worker
    // 省略一部分堆栈信息
	at com.alibaba.excel.read.metadata.holder.AbstractReadHolder.notifyAfterAllAnalysed(AbstractReadHolder.java:189)
	at com.alibaba.excel.analysis.v07.XlsxSaxAnalyser.execute(XlsxSaxAnalyser.java:191)
	at com.alibaba.excel.analysis.ExcelAnalyserImpl.analysis(ExcelAnalyserImpl.java:105)
	at com.alibaba.excel.ExcelReader.readAll(ExcelReader.java:160)
	// 省略一部分堆栈信息
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)
2021-01-31 18:22:09.187 ERROR 2571 [uploadExecutor-2] c.y.f.u.c.impl.SingleFileReaderCallBack  : Data import job failure, recordId=9e97ce12-f6da-43c1-b2ee-371149e7ca2d, errorMsg=org.springframework.data.redis.RedisSystemException: Unknown redis exception; nested exception is java.util.concurrent.RejectedExecutionException: Thread limit exceeded replacing blocked worker
2021-01-31 18:22:09.207 ERROR 2571 [uploadExecutor-2] c.y.f.upload.service.FileSystemService   : File parse and import failed:org.springframework.data.redis.RedisSystemException: Unknown redis exception; nested exception is java.util.concurrent.RejectedExecutionException: Thread limit exceeded replacing blocked worker, file : {"filePath":"113倍账单基本分析.xlsx","originalFileName":"113倍账单基本分析.xlsx"}
com.alibaba.excel.exception.ExcelAnalysisException: org.springframework.data.redis.RedisSystemException: Unknown redis exception; nested exception is java.util.concurrent.RejectedExecutionException: Thread limit exceeded replacing blocked worker
	at com.alibaba.excel.read.metadata.holder.AbstractReadHolder.notifyEndOneRow(AbstractReadHolder.java:151)
	at com.alibaba.excel.analysis.v07.handlers.ProcessResultCellHandler.endHandle(ProcessResultCellHandler.java:45)
	at com.alibaba.excel.analysis.v07.XlsxRowHandler.endElement(XlsxRowHandler.java:44)
	at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source)
	at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanEndElement(Unknown Source)
	at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
	at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
	at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
	at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
	at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
	at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
	at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
	at com.alibaba.excel.analysis.v07.XlsxSaxAnalyser.parseXmlSource(XlsxSaxAnalyser.java:165)
	at com.alibaba.excel.analysis.v07.XlsxSaxAnalyser.execute(XlsxSaxAnalyser.java:189)
	at com.alibaba.excel.analysis.ExcelAnalyserImpl.analysis(ExcelAnalyserImpl.java:105)
	at com.alibaba.excel.ExcelReader.readAll(ExcelReader.java:160)
	// 省略一部分堆栈信息
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.RuntimeException: org.springframework.data.redis.RedisSystemException: Unknown redis exception; nested exception is java.util.concurrent.RejectedExecutionException: Thread limit exceeded replacing blocked worker
	// 省略一部分堆栈信息
	at com.alibaba.excel.read.metadata.holder.AbstractReadHolder.notifyEndOneRow(AbstractReadHolder.java:145)
	... 21 more

来到 RejectedExecutionException 里面打上一个断点, 调试一下, 堆栈信息如下 

可以看出是在 ForkJoinPool. tryCompensate 里面似乎是尝试什么东西, pool 承载不了了, 因此 抛出了 RejectedExecutionException

<init>:64, RejectedExecutionException (java.util.concurrent)
tryCompensate:2011, ForkJoinPool (java.util.concurrent)
managedBlock:3310, ForkJoinPool (java.util.concurrent)
timedGet:1775, CompletableFuture (java.util.concurrent)
get:1915, CompletableFuture (java.util.concurrent)
await:81, AsyncCommand (io.lettuce.core.protocol)
awaitOrCancel:117, LettuceFutures (io.lettuce.core)
handleInvocation:75, FutureSyncInvocationHandler (io.lettuce.core)
invoke:79, AbstractInvocationHandler (io.lettuce.core.internal)
hget:-1, $Proxy114 (com.sun.proxy)
hGet:170, LettuceHashCommands (org.springframework.data.redis.connection.lettuce)
hGet:1110, DefaultedRedisConnection (org.springframework.data.redis.connection)
lambda$get$0:53, DefaultHashOperations (org.springframework.data.redis.core)
doInRedis:-1, 384775020 (org.springframework.data.redis.core.DefaultHashOperations$$Lambda$3334)
execute:228, RedisTemplate (org.springframework.data.redis.core)
execute:188, RedisTemplate (org.springframework.data.redis.core)
execute:96, AbstractOperations (org.springframework.data.redis.core)
get:53, DefaultHashOperations (org.springframework.data.redis.core)
get:65, DefaultBoundHashOperations (org.springframework.data.redis.core)
// 省略部分堆栈信息 
accept:193, ReferencePipeline$3$1 (java.util.stream)
forEachRemaining:1382, ArrayList$ArrayListSpliterator (java.util)
copyInto:481, AbstractPipeline (java.util.stream)
wrapAndCopyInto:471, AbstractPipeline (java.util.stream)
doLeaf:747, ReduceOps$ReduceTask (java.util.stream)
doLeaf:721, ReduceOps$ReduceTask (java.util.stream)
compute:316, AbstractTask (java.util.stream)
exec:731, CountedCompleter (java.util.concurrent)
doExec:289, ForkJoinTask (java.util.concurrent)
runTask:1056, ForkJoinPool$WorkQueue (java.util.concurrent)
runWorker:1692, ForkJoinPool (java.util.concurrent)
run:157, ForkJoinWorkerThread (java.util.concurrent)

来到这里的 ForkJoinPool. tryCompensate, 看样子这里是 pool 是 ForkJoin 的 commonPool, 并且 totalCount 超过了 7 + 256 

呵呵 这里我之前是差点没有注意到 这里的 "this == common" 的判断, 因此 造成了一些 我的其他的疑惑, 呵呵 后面来看 

单元测试

根据这里的一些情况, 我们大致构造 单元测试如下来 复现问题 

必须是需要 parallelStream[默认基于 commonPool] 的 api 结合 CompletableFuture, 才能复现这个问题 

呵呵 在我这里真实场景里面 AsyncCommand 是继承了 CompletableFuture 的, 呵呵 这个可是真的隐秘 

package com.hx.test11;

import com.hx.log.util.Tools;

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.*;

/**
 * Test09ParallelStreamRejectEx
 *
 * @author Jerry.X.He <970655147@qq.com>
 * @version 1.0
 * @date 2021-01-29 17:17
 */
public class Test09ParallelStreamRejectEx {

    // nThread
    static int N_THREAD = 10;
    // executorService
    static ExecutorService NORMAL_EXECUTOR_SERVICE = new ThreadPoolExecutor(N_THREAD, N_THREAD,
            10, TimeUnit.SECONDS, new LinkedBlockingQueue<>());
    static ExecutorService FORK_JOIN_EXECUTOR_SERVICE = ForkJoinPool.commonPool();

    // Test09ParallelStreamRejectEx
    public static void main(String[] args) throws Exception {

        // parallelism : 1 -> 1
        // parallelism : 2 -> 8
        // parallelism : 4 -> 16
        // parallelism : 7 -> 32
        // parallelism : 8 -> 32
        // parallelism : 16 -> 64

        // list
        List<Integer> list = new ArrayList<>();
        for (int j = 0; j < 100_0000; j++) {
            list.add(j);
        }

        for (int i = 0; i < N_THREAD; i++) {
            NORMAL_EXECUTOR_SERVICE.execute(() -> {
                int count = list
                        .parallelStream()
                        .map(ele -> {
                            Future future = CompletableFuture.runAsync(() -> {
                            });

                            try {
                                Object result = future.get(10, TimeUnit.SECONDS);
                            } catch (Exception e) {
                                e.printStackTrace();
                            }
                            return ele;
                        })
                        .reduce(Integer::sum)
                        .orElse(0);
                System.out.println(count);
            });

//            FORK_JOIN_EXECUTOR_SERVICE.submit(() -> {
//                int count = list
//                        .parallelStream()
//                        .map(ele -> {
//                            Future future = CompletableFuture.runAsync(() -> { });
//
//                            try {
//                                Object result = future.get(10, TimeUnit.SECONDS);
//                            } catch (Exception e) {
//                                e.printStackTrace();
//                            }
//                            return ele;
//                        })
//                        .reduce(Integer::sum)
//                        .orElse(0);
//                System.out.println(count);
//            });
        }

        int x = 0;
        Tools.sleep(1000_000);

    }

}

然后 稍微打印一下 commonPool 的情况 

可以看到的是 size 是一直在增加, 一直增加到了 263[7 + 256], 然后就抛出了 我们看到的异常 

java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 7, active = 7, running = 7, steals = 0, tasks = 24, submissions = 61]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 8, active = 7, running = 7, steals = 0, tasks = 28, submissions = 61]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 9, active = 7, running = 7, steals = 0, tasks = 30, submissions = 62]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 10, active = 7, running = 7, steals = 0, tasks = 33, submissions = 62]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 13, active = 7, running = 7, steals = 1, tasks = 41, submissions = 63]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 14, active = 7, running = 7, steals = 2, tasks = 43, submissions = 63]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 15, active = 7, running = 7, steals = 2, tasks = 44, submissions = 65]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 17, active = 7, running = 7, steals = 3, tasks = 47, submissions = 67]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 17, active = 7, running = 7, steals = 3, tasks = 47, submissions = 68]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 19, active = 7, running = 7, steals = 4, tasks = 51, submissions = 68]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 20, active = 7, running = 7, steals = 5, tasks = 52, submissions = 68]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 22, active = 7, running = 7, steals = 7, tasks = 54, submissions = 68]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 22, active = 7, running = 7, steals = 7, tasks = 54, submissions = 69]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 23, active = 7, running = 7, steals = 7, tasks = 53, submissions = 71]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 23, active = 7, running = 7, steals = 7, tasks = 53, submissions = 72]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 25, active = 9, running = 9, steals = 11, tasks = 53, submissions = 74]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 27, active = 9, running = 9, steals = 11, tasks = 59, submissions = 75]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 28, active = 10, running = 10, steals = 12, tasks = 58, submissions = 76]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 28, active = 10, running = 10, steals = 12, tasks = 58, submissions = 77]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 30, active = 10, running = 10, steals = 14, tasks = 61, submissions = 77]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 33, active = 11, running = 11, steals = 15, tasks = 66, submissions = 79]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 33, active = 11, running = 11, steals = 15, tasks = 66, submissions = 80]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 34, active = 11, running = 11, steals = 16, tasks = 66, submissions = 81]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 35, active = 11, running = 11, steals = 17, tasks = 65, submissions = 81]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 38, active = 12, running = 12, steals = 19, tasks = 68, submissions = 82]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 40, active = 12, running = 12, steals = 20, tasks = 68, submissions = 83]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 41, active = 12, running = 12, steals = 20, tasks = 68, submissions = 84]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 41, active = 12, running = 12, steals = 20, tasks = 68, submissions = 86]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 41, active = 10, running = 10, steals = 20, tasks = 68, submissions = 86]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 45, active = 10, running = 10, steals = 23, tasks = 65, submissions = 89]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 46, active = 12, running = 12, steals = 25, tasks = 65, submissions = 91]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 47, active = 12, running = 12, steals = 25, tasks = 64, submissions = 93]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 52, active = 13, running = 13, steals = 33, tasks = 66, submissions = 96]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 57, active = 18, running = 18, steals = 42, tasks = 65, submissions = 101]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 58, active = 18, running = 18, steals = 43, tasks = 66, submissions = 101]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 59, active = 18, running = 18, steals = 43, tasks = 65, submissions = 102]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 59, active = 17, running = 17, steals = 43, tasks = 65, submissions = 102]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 59, active = 17, running = 17, steals = 43, tasks = 65, submissions = 103]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 63, active = 14, running = 14, steals = 48, tasks = 64, submissions = 107]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 63, active = 13, running = 13, steals = 48, tasks = 64, submissions = 108]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 64, active = 13, running = 13, steals = 49, tasks = 64, submissions = 108]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 64, active = 12, running = 12, steals = 49, tasks = 64, submissions = 108]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 64, active = 11, running = 11, steals = 49, tasks = 64, submissions = 108]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 66, active = 9, running = 9, steals = 50, tasks = 63, submissions = 110]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 69, active = 11, running = 11, steals = 54, tasks = 62, submissions = 112]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 70, active = 11, running = 11, steals = 54, tasks = 61, submissions = 113]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 71, active = 11, running = 11, steals = 56, tasks = 61, submissions = 113]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 71, active = 8, running = 8, steals = 56, tasks = 61, submissions = 114]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 71, active = 6, running = 6, steals = 56, tasks = 61, submissions = 114]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 72, active = 4, running = 4, steals = 56, tasks = 65, submissions = 115]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 73, active = 4, running = 4, steals = 57, tasks = 64, submissions = 116]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 74, active = 4, running = 4, steals = 59, tasks = 63, submissions = 117]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 75, active = 1, running = 1, steals = 59, tasks = 62, submissions = 118]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 76, active = 2, running = 2, steals = 61, tasks = 65, submissions = 118]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 77, active = 1, running = 1, steals = 61, tasks = 66, submissions = 119]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 78, active = 2, running = 2, steals = 62, tasks = 65, submissions = 120]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 79, active = 2, running = 2, steals = 63, tasks = 65, submissions = 121]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 80, active = 1, running = 1, steals = 63, tasks = 65, submissions = 122]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 81, active = 1, running = 1, steals = 63, tasks = 67, submissions = 123]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 82, active = 2, running = 2, steals = 65, tasks = 66, submissions = 124]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 83, active = 1, running = 1, steals = 66, tasks = 65, submissions = 125]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 84, active = 1, running = 1, steals = 66, tasks = 64, submissions = 126]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 85, active = 4, running = 4, steals = 69, tasks = 67, submissions = 126]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 86, active = 2, running = 2, steals = 70, tasks = 68, submissions = 127]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 88, active = 2, running = 2, steals = 71, tasks = 68, submissions = 129]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 89, active = 2, running = 2, steals = 73, tasks = 68, submissions = 130]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 91, active = 2, running = 2, steals = 73, tasks = 69, submissions = 131]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 92, active = 2, running = 2, steals = 75, tasks = 68, submissions = 132]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 93, active = 1, running = 1, steals = 75, tasks = 68, submissions = 133]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 94, active = 5, running = 5, steals = 80, tasks = 67, submissions = 134]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 94, active = 4, running = 4, steals = 80, tasks = 67, submissions = 134]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 95, active = 1, running = 1, steals = 80, tasks = 66, submissions = 135]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 96, active = 3, running = 3, steals = 82, tasks = 66, submissions = 136]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 97, active = 2, running = 2, steals = 82, tasks = 66, submissions = 137]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 98, active = 2, running = 2, steals = 82, tasks = 67, submissions = 138]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 99, active = 2, running = 2, steals = 82, tasks = 66, submissions = 139]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 100, active = 3, running = 3, steals = 84, tasks = 65, submissions = 140]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 100, active = 2, running = 2, steals = 84, tasks = 65, submissions = 140]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 101, active = 3, running = 3, steals = 87, tasks = 65, submissions = 141]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 103, active = 3, running = 3, steals = 88, tasks = 63, submissions = 143]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 104, active = 2, running = 2, steals = 89, tasks = 63, submissions = 144]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 106, active = 2, running = 2, steals = 89, tasks = 61, submissions = 146]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 107, active = 3, running = 3, steals = 92, tasks = 63, submissions = 146]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 108, active = 1, running = 1, steals = 92, tasks = 66, submissions = 146]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 109, active = 1, running = 1, steals = 92, tasks = 65, submissions = 147]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 110, active = 2, running = 2, steals = 93, tasks = 66, submissions = 147]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 111, active = 1, running = 1, steals = 93, tasks = 65, submissions = 148]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 112, active = 1, running = 1, steals = 93, tasks = 64, submissions = 149]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 113, active = 1, running = 1, steals = 93, tasks = 64, submissions = 150]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 114, active = 2, running = 2, steals = 94, tasks = 63, submissions = 151]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 115, active = 1, running = 1, steals = 94, tasks = 63, submissions = 152]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 116, active = 1, running = 1, steals = 94, tasks = 62, submissions = 153]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 117, active = 1, running = 1, steals = 94, tasks = 62, submissions = 154]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 118, active = 6, running = 6, steals = 99, tasks = 61, submissions = 155]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 119, active = 6, running = 6, steals = 100, tasks = 60, submissions = 156]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 120, active = 6, running = 6, steals = 100, tasks = 59, submissions = 157]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 121, active = 5, running = 5, steals = 101, tasks = 58, submissions = 157]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 121, active = 3, running = 3, steals = 101, tasks = 58, submissions = 158]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 122, active = 4, running = 4, steals = 105, tasks = 58, submissions = 158]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 123, active = 3, running = 3, steals = 108, tasks = 61, submissions = 158]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 124, active = 2, running = 2, steals = 108, tasks = 61, submissions = 159]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 125, active = 3, running = 3, steals = 110, tasks = 60, submissions = 160]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 126, active = 2, running = 2, steals = 110, tasks = 61, submissions = 160]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 127, active = 1, running = 1, steals = 110, tasks = 62, submissions = 161]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 128, active = 1, running = 1, steals = 110, tasks = 62, submissions = 162]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 129, active = 3, running = 3, steals = 113, tasks = 61, submissions = 163]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 130, active = 6, running = 6, steals = 119, tasks = 61, submissions = 162]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 130, active = 5, running = 5, steals = 119, tasks = 61, submissions = 162]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 132, active = 5, running = 5, steals = 122, tasks = 63, submissions = 164]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 132, active = 4, running = 4, steals = 122, tasks = 63, submissions = 164]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 133, active = 3, running = 3, steals = 122, tasks = 62, submissions = 165]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 134, active = 2, running = 2, steals = 122, tasks = 61, submissions = 166]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 135, active = 1, running = 1, steals = 122, tasks = 60, submissions = 167]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 136, active = 4, running = 4, steals = 125, tasks = 60, submissions = 168]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 138, active = 3, running = 3, steals = 126, tasks = 60, submissions = 169]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 139, active = 1, running = 1, steals = 126, tasks = 59, submissions = 170]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 140, active = 3, running = 3, steals = 129, tasks = 59, submissions = 170]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 141, active = 5, running = 5, steals = 139, tasks = 59, submissions = 169]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 141, active = 5, running = 5, steals = 139, tasks = 59, submissions = 170]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 141, active = 5, running = 5, steals = 139, tasks = 59, submissions = 171]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 142, active = 4, running = 4, steals = 139, tasks = 58, submissions = 172]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 143, active = 4, running = 4, steals = 139, tasks = 57, submissions = 173]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 143, active = 3, running = 3, steals = 139, tasks = 57, submissions = 173]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 144, active = 3, running = 3, steals = 140, tasks = 56, submissions = 174]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 144, active = 2, running = 2, steals = 140, tasks = 56, submissions = 174]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 145, active = 2, running = 2, steals = 142, tasks = 55, submissions = 175]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 146, active = 7, running = 7, steals = 152, tasks = 54, submissions = 174]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 146, active = 7, running = 7, steals = 152, tasks = 54, submissions = 175]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 146, active = 7, running = 7, steals = 152, tasks = 54, submissions = 176]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 147, active = 6, running = 6, steals = 155, tasks = 53, submissions = 175]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 148, active = 9, running = 9, steals = 162, tasks = 52, submissions = 176]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 148, active = 9, running = 9, steals = 162, tasks = 52, submissions = 177]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 148, active = 9, running = 9, steals = 162, tasks = 52, submissions = 178]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 148, active = 8, running = 8, steals = 162, tasks = 52, submissions = 178]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 149, active = 1, running = 1, steals = 162, tasks = 51, submissions = 179]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 150, active = 2, running = 2, steals = 164, tasks = 51, submissions = 180]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 151, active = 2, running = 2, steals = 165, tasks = 50, submissions = 181]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 152, active = 2, running = 2, steals = 166, tasks = 50, submissions = 182]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 153, active = 1, running = 1, steals = 166, tasks = 49, submissions = 183]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 154, active = 5, running = 5, steals = 171, tasks = 48, submissions = 184]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 154, active = 4, running = 4, steals = 171, tasks = 48, submissions = 184]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 155, active = 7, running = 7, steals = 182, tasks = 49, submissions = 182]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 155, active = 7, running = 7, steals = 182, tasks = 49, submissions = 183]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 155, active = 6, running = 6, steals = 182, tasks = 49, submissions = 183]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 157, active = 14, running = 14, steals = 193, tasks = 49, submissions = 184]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 157, active = 12, running = 12, steals = 193, tasks = 49, submissions = 184]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 157, active = 12, running = 12, steals = 193, tasks = 49, submissions = 185]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 159, active = 8, running = 8, steals = 194, tasks = 48, submissions = 188]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 160, active = 8, running = 8, steals = 196, tasks = 47, submissions = 189]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 160, active = 6, running = 6, steals = 196, tasks = 47, submissions = 189]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 161, active = 2, running = 2, steals = 197, tasks = 46, submissions = 190]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 162, active = 5, running = 5, steals = 204, tasks = 45, submissions = 189]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 162, active = 5, running = 5, steals = 204, tasks = 45, submissions = 190]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 162, active = 5, running = 5, steals = 204, tasks = 45, submissions = 191]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 163, active = 9, running = 9, steals = 213, tasks = 46, submissions = 189]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 163, active = 8, running = 8, steals = 213, tasks = 46, submissions = 189]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 163, active = 8, running = 8, steals = 213, tasks = 46, submissions = 190]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 163, active = 8, running = 8, steals = 213, tasks = 46, submissions = 191]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 163, active = 8, running = 8, steals = 213, tasks = 46, submissions = 192]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 165, active = 5, running = 5, steals = 213, tasks = 46, submissions = 194]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 165, active = 4, running = 4, steals = 213, tasks = 46, submissions = 194]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 166, active = 2, running = 2, steals = 215, tasks = 46, submissions = 195]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 167, active = 1, running = 1, steals = 215, tasks = 45, submissions = 196]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 168, active = 1, running = 1, steals = 215, tasks = 45, submissions = 197]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 169, active = 1, running = 1, steals = 215, tasks = 44, submissions = 198]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 170, active = 1, running = 1, steals = 215, tasks = 43, submissions = 199]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 171, active = 1, running = 1, steals = 215, tasks = 43, submissions = 200]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 172, active = 2, running = 2, steals = 216, tasks = 42, submissions = 201]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 173, active = 2, running = 2, steals = 217, tasks = 41, submissions = 202]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 174, active = 9, running = 9, steals = 230, tasks = 40, submissions = 201]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 174, active = 9, running = 9, steals = 230, tasks = 40, submissions = 202]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 174, active = 9, running = 9, steals = 230, tasks = 40, submissions = 203]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 174, active = 7, running = 7, steals = 230, tasks = 40, submissions = 203]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 175, active = 3, running = 3, steals = 233, tasks = 41, submissions = 204]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 176, active = 2, running = 2, steals = 233, tasks = 41, submissions = 205]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 177, active = 1, running = 1, steals = 233, tasks = 40, submissions = 206]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 178, active = 1, running = 1, steals = 233, tasks = 39, submissions = 207]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 179, active = 6, running = 6, steals = 243, tasks = 39, submissions = 207]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 179, active = 5, running = 5, steals = 243, tasks = 39, submissions = 207]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 180, active = 7, running = 7, steals = 247, tasks = 38, submissions = 209]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 181, active = 7, running = 7, steals = 248, tasks = 39, submissions = 210]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 181, active = 6, running = 6, steals = 248, tasks = 39, submissions = 210]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 182, active = 3, running = 3, steals = 248, tasks = 39, submissions = 211]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 183, active = 2, running = 2, steals = 248, tasks = 38, submissions = 212]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 184, active = 2, running = 2, steals = 248, tasks = 37, submissions = 213]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 185, active = 1, running = 1, steals = 248, tasks = 36, submissions = 214]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 186, active = 6, running = 6, steals = 253, tasks = 35, submissions = 215]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 186, active = 5, running = 5, steals = 253, tasks = 35, submissions = 215]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 187, active = 6, running = 6, steals = 260, tasks = 35, submissions = 215]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 187, active = 5, running = 5, steals = 260, tasks = 35, submissions = 215]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 187, active = 3, running = 3, steals = 260, tasks = 35, submissions = 216]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 188, active = 3, running = 3, steals = 261, tasks = 34, submissions = 217]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 188, active = 2, running = 2, steals = 261, tasks = 34, submissions = 217]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 189, active = 3, running = 3, steals = 264, tasks = 33, submissions = 217]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 189, active = 2, running = 2, steals = 264, tasks = 33, submissions = 218]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 190, active = 8, running = 8, steals = 274, tasks = 32, submissions = 216]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 190, active = 8, running = 8, steals = 274, tasks = 32, submissions = 217]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 190, active = 7, running = 7, steals = 274, tasks = 32, submissions = 217]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 190, active = 5, running = 5, steals = 274, tasks = 32, submissions = 218]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 191, active = 11, running = 11, steals = 286, tasks = 32, submissions = 216]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 191, active = 11, running = 11, steals = 286, tasks = 32, submissions = 217]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 191, active = 11, running = 11, steals = 286, tasks = 32, submissions = 218]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 191, active = 10, running = 10, steals = 286, tasks = 32, submissions = 219]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 192, active = 9, running = 9, steals = 286, tasks = 31, submissions = 220]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 192, active = 4, running = 4, steals = 286, tasks = 31, submissions = 221]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 193, active = 1, running = 1, steals = 286, tasks = 31, submissions = 222]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 194, active = 8, running = 8, steals = 295, tasks = 30, submissions = 221]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 194, active = 7, running = 7, steals = 295, tasks = 30, submissions = 221]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 194, active = 6, running = 6, steals = 295, tasks = 30, submissions = 223]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 194, active = 3, running = 3, steals = 295, tasks = 30, submissions = 223]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 195, active = 8, running = 8, steals = 308, tasks = 32, submissions = 218]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 195, active = 8, running = 8, steals = 308, tasks = 32, submissions = 219]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 195, active = 7, running = 7, steals = 308, tasks = 32, submissions = 219]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 195, active = 7, running = 7, steals = 308, tasks = 32, submissions = 222]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 195, active = 7, running = 7, steals = 308, tasks = 32, submissions = 224]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 196, active = 6, running = 6, steals = 308, tasks = 33, submissions = 225]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 197, active = 4, running = 4, steals = 308, tasks = 33, submissions = 226]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 198, active = 2, running = 2, steals = 308, tasks = 33, submissions = 227]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 199, active = 2, running = 2, steals = 308, tasks = 32, submissions = 228]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 200, active = 1, running = 1, steals = 308, tasks = 31, submissions = 229]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 201, active = 2, running = 2, steals = 309, tasks = 30, submissions = 230]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 202, active = 3, running = 3, steals = 311, tasks = 29, submissions = 231]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 203, active = 6, running = 6, steals = 317, tasks = 28, submissions = 231]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 203, active = 6, running = 6, steals = 317, tasks = 28, submissions = 232]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 204, active = 9, running = 9, steals = 324, tasks = 27, submissions = 229]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 204, active = 8, running = 8, steals = 324, tasks = 27, submissions = 230]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 204, active = 8, running = 8, steals = 324, tasks = 27, submissions = 231]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 204, active = 8, running = 8, steals = 324, tasks = 27, submissions = 233]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 205, active = 12, running = 12, steals = 334, tasks = 29, submissions = 227]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 206, active = 11, running = 11, steals = 334, tasks = 29, submissions = 230]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 206, active = 11, running = 11, steals = 334, tasks = 29, submissions = 231]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 206, active = 11, running = 11, steals = 334, tasks = 29, submissions = 232]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 206, active = 11, running = 11, steals = 334, tasks = 29, submissions = 233]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 206, active = 11, running = 11, steals = 334, tasks = 29, submissions = 234]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 208, active = 8, running = 8, steals = 335, tasks = 27, submissions = 236]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 208, active = 6, running = 6, steals = 335, tasks = 27, submissions = 236]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 208, active = 5, running = 5, steals = 335, tasks = 27, submissions = 236]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 209, active = 2, running = 2, steals = 335, tasks = 26, submissions = 237]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 210, active = 7, running = 7, steals = 344, tasks = 27, submissions = 234]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 210, active = 7, running = 7, steals = 344, tasks = 27, submissions = 235]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 210, active = 7, running = 7, steals = 344, tasks = 27, submissions = 236]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 211, active = 7, running = 7, steals = 344, tasks = 26, submissions = 238]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 212, active = 14, running = 14, steals = 357, tasks = 26, submissions = 232]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 212, active = 14, running = 14, steals = 357, tasks = 26, submissions = 234]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 212, active = 14, running = 14, steals = 357, tasks = 26, submissions = 235]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 212, active = 14, running = 14, steals = 357, tasks = 26, submissions = 236]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 212, active = 14, running = 14, steals = 357, tasks = 26, submissions = 237]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 212, active = 13, running = 13, steals = 357, tasks = 26, submissions = 237]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 212, active = 12, running = 12, steals = 357, tasks = 26, submissions = 237]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 212, active = 3, running = 3, steals = 357, tasks = 26, submissions = 238]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 213, active = 26, running = 26, steals = 396, tasks = 25, submissions = 226]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 213, active = 26, running = 26, steals = 396, tasks = 25, submissions = 227]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 213, active = 25, running = 25, steals = 396, tasks = 25, submissions = 227]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 213, active = 24, running = 24, steals = 396, tasks = 25, submissions = 227]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 213, active = 24, running = 24, steals = 396, tasks = 25, submissions = 228]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 213, active = 23, running = 23, steals = 396, tasks = 25, submissions = 228]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 213, active = 23, running = 23, steals = 396, tasks = 25, submissions = 229]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 213, active = 21, running = 21, steals = 396, tasks = 25, submissions = 229]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 213, active = 20, running = 20, steals = 396, tasks = 25, submissions = 232]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 213, active = 18, running = 18, steals = 396, tasks = 25, submissions = 235]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 213, active = 17, running = 17, steals = 396, tasks = 25, submissions = 238]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 213, active = 14, running = 14, steals = 396, tasks = 25, submissions = 239]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 213, active = 12, running = 12, steals = 396, tasks = 25, submissions = 239]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 213, active = 11, running = 11, steals = 396, tasks = 25, submissions = 239]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 214, active = 13, running = 13, steals = 401, tasks = 24, submissions = 240]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 214, active = 12, running = 12, steals = 401, tasks = 24, submissions = 240]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 214, active = 10, running = 10, steals = 401, tasks = 24, submissions = 240]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 214, active = 7, running = 7, steals = 401, tasks = 24, submissions = 240]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 215, active = 24, running = 24, steals = 432, tasks = 27, submissions = 231]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 215, active = 23, running = 23, steals = 432, tasks = 27, submissions = 231]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 215, active = 22, running = 22, steals = 432, tasks = 27, submissions = 231]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 215, active = 22, running = 22, steals = 432, tasks = 27, submissions = 232]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 216, active = 20, running = 20, steals = 436, tasks = 28, submissions = 234]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 216, active = 18, running = 18, steals = 436, tasks = 28, submissions = 234]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 216, active = 17, running = 17, steals = 436, tasks = 28, submissions = 234]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 217, active = 16, running = 16, steals = 436, tasks = 28, submissions = 239]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 217, active = 16, running = 16, steals = 436, tasks = 28, submissions = 241]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 217, active = 15, running = 15, steals = 436, tasks = 28, submissions = 242]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 217, active = 14, running = 14, steals = 436, tasks = 28, submissions = 242]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 219, active = 4, running = 4, steals = 436, tasks = 27, submissions = 244]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 219, active = 3, running = 3, steals = 436, tasks = 27, submissions = 244]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 220, active = 1, running = 1, steals = 436, tasks = 26, submissions = 245]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 221, active = 1, running = 1, steals = 436, tasks = 25, submissions = 246]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 222, active = 2, running = 2, steals = 437, tasks = 25, submissions = 247]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 223, active = 1, running = 1, steals = 437, tasks = 25, submissions = 248]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 224, active = 1, running = 1, steals = 437, tasks = 24, submissions = 249]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 225, active = 1, running = 1, steals = 437, tasks = 23, submissions = 250]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 226, active = 1, running = 1, steals = 437, tasks = 22, submissions = 251]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 227, active = 13, running = 13, steals = 453, tasks = 21, submissions = 248]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 227, active = 12, running = 12, steals = 453, tasks = 21, submissions = 248]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 227, active = 11, running = 11, steals = 453, tasks = 21, submissions = 248]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 227, active = 11, running = 11, steals = 453, tasks = 21, submissions = 249]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 227, active = 11, running = 11, steals = 453, tasks = 21, submissions = 251]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 227, active = 9, running = 9, steals = 453, tasks = 21, submissions = 251]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 227, active = 6, running = 6, steals = 453, tasks = 21, submissions = 252]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 227, active = 4, running = 4, steals = 453, tasks = 21, submissions = 252]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 228, active = 19, running = 19, steals = 484, tasks = 23, submissions = 239]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 228, active = 19, running = 19, steals = 484, tasks = 23, submissions = 240]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 228, active = 19, running = 19, steals = 484, tasks = 23, submissions = 241]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 228, active = 18, running = 18, steals = 484, tasks = 23, submissions = 241]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 228, active = 18, running = 18, steals = 484, tasks = 23, submissions = 242]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 228, active = 17, running = 17, steals = 484, tasks = 23, submissions = 245]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 228, active = 16, running = 16, steals = 484, tasks = 23, submissions = 248]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 228, active = 15, running = 15, steals = 484, tasks = 23, submissions = 248]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 228, active = 14, running = 14, steals = 484, tasks = 23, submissions = 249]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 228, active = 14, running = 14, steals = 484, tasks = 23, submissions = 250]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 229, active = 14, running = 14, steals = 484, tasks = 22, submissions = 252]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 229, active = 12, running = 12, steals = 484, tasks = 22, submissions = 253]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 229, active = 11, running = 11, steals = 484, tasks = 22, submissions = 253]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 230, active = 3, running = 3, steals = 485, tasks = 22, submissions = 254]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 231, active = 4, running = 4, steals = 488, tasks = 21, submissions = 255]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 232, active = 4, running = 4, steals = 491, tasks = 20, submissions = 256]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 233, active = 7, running = 7, steals = 499, tasks = 20, submissions = 255]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 233, active = 7, running = 7, steals = 499, tasks = 20, submissions = 256]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 233, active = 7, running = 7, steals = 499, tasks = 20, submissions = 257]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 234, active = 6, running = 6, steals = 499, tasks = 19, submissions = 258]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 234, active = 5, running = 5, steals = 499, tasks = 19, submissions = 258]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 235, active = 5, running = 5, steals = 504, tasks = 19, submissions = 258]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 235, active = 5, running = 5, steals = 504, tasks = 19, submissions = 259]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 235, active = 4, running = 4, steals = 504, tasks = 19, submissions = 259]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 236, active = 2, running = 2, steals = 504, tasks = 18, submissions = 260]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 237, active = 22, running = 22, steals = 531, tasks = 19, submissions = 254]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 237, active = 21, running = 21, steals = 531, tasks = 19, submissions = 254]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 237, active = 20, running = 20, steals = 531, tasks = 19, submissions = 254]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 237, active = 20, running = 20, steals = 531, tasks = 19, submissions = 255]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 237, active = 20, running = 20, steals = 531, tasks = 19, submissions = 256]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 237, active = 19, running = 19, steals = 531, tasks = 19, submissions = 256]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 237, active = 17, running = 17, steals = 531, tasks = 19, submissions = 256]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 238, active = 9, running = 9, steals = 533, tasks = 18, submissions = 258]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 238, active = 7, running = 7, steals = 533, tasks = 18, submissions = 261]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 239, active = 13, running = 13, steals = 546, tasks = 17, submissions = 260]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 239, active = 13, running = 13, steals = 546, tasks = 17, submissions = 261]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 239, active = 9, running = 9, steals = 546, tasks = 17, submissions = 262]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 240, active = 21, running = 21, steals = 571, tasks = 17, submissions = 250]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 240, active = 19, running = 19, steals = 571, tasks = 17, submissions = 253]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 240, active = 19, running = 19, steals = 571, tasks = 17, submissions = 254]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 240, active = 19, running = 19, steals = 571, tasks = 17, submissions = 255]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 240, active = 18, running = 18, steals = 571, tasks = 17, submissions = 255]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 240, active = 12, running = 12, steals = 571, tasks = 17, submissions = 262]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 240, active = 11, running = 11, steals = 571, tasks = 17, submissions = 262]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 240, active = 9, running = 9, steals = 571, tasks = 17, submissions = 262]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 240, active = 8, running = 8, steals = 571, tasks = 17, submissions = 262]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 240, active = 7, running = 7, steals = 571, tasks = 17, submissions = 262]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 241, active = 22, running = 22, steals = 603, tasks = 20, submissions = 252]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 241, active = 22, running = 22, steals = 603, tasks = 20, submissions = 253]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 241, active = 21, running = 21, steals = 603, tasks = 20, submissions = 253]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 241, active = 21, running = 21, steals = 603, tasks = 20, submissions = 254]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 241, active = 20, running = 20, steals = 603, tasks = 20, submissions = 254]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 241, active = 20, running = 20, steals = 603, tasks = 20, submissions = 255]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 242, active = 16, running = 16, steals = 603, tasks = 21, submissions = 257]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 242, active = 13, running = 13, steals = 603, tasks = 21, submissions = 259]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 242, active = 12, running = 12, steals = 603, tasks = 21, submissions = 259]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 242, active = 9, running = 9, steals = 603, tasks = 21, submissions = 263]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 244, active = 12, running = 12, steals = 607, tasks = 20, submissions = 265]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 244, active = 8, running = 8, steals = 607, tasks = 20, submissions = 265]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 245, active = 1, running = 1, steals = 607, tasks = 19, submissions = 266]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 246, active = 1, running = 1, steals = 607, tasks = 19, submissions = 267]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 247, active = 1, running = 1, steals = 607, tasks = 18, submissions = 268]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 248, active = 1, running = 1, steals = 607, tasks = 17, submissions = 269]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 249, active = 1, running = 1, steals = 607, tasks = 16, submissions = 270]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 250, active = 22, running = 22, steals = 641, tasks = 18, submissions = 257]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 250, active = 22, running = 22, steals = 641, tasks = 18, submissions = 258]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 250, active = 22, running = 22, steals = 641, tasks = 18, submissions = 259]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 250, active = 21, running = 21, steals = 641, tasks = 18, submissions = 259]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 250, active = 21, running = 21, steals = 641, tasks = 18, submissions = 260]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 250, active = 21, running = 21, steals = 641, tasks = 18, submissions = 261]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 250, active = 18, running = 18, steals = 641, tasks = 18, submissions = 261]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 251, active = 18, running = 18, steals = 642, tasks = 18, submissions = 263]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 251, active = 16, running = 16, steals = 642, tasks = 18, submissions = 267]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 251, active = 15, running = 15, steals = 642, tasks = 18, submissions = 270]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 252, active = 15, running = 15, steals = 644, tasks = 17, submissions = 272]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 252, active = 14, running = 14, steals = 644, tasks = 17, submissions = 272]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 252, active = 13, running = 13, steals = 644, tasks = 17, submissions = 272]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 253, active = 2, running = 2, steals = 645, tasks = 16, submissions = 273]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 254, active = 17, running = 17, steals = 672, tasks = 15, submissions = 263]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 254, active = 17, running = 17, steals = 672, tasks = 15, submissions = 264]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 254, active = 17, running = 17, steals = 672, tasks = 15, submissions = 265]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 254, active = 17, running = 17, steals = 672, tasks = 15, submissions = 266]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 254, active = 17, running = 17, steals = 672, tasks = 15, submissions = 267]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 254, active = 16, running = 16, steals = 672, tasks = 15, submissions = 267]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 254, active = 14, running = 14, steals = 672, tasks = 15, submissions = 268]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 255, active = 19, running = 19, steals = 686, tasks = 16, submissions = 265]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 255, active = 18, running = 18, steals = 686, tasks = 16, submissions = 268]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 255, active = 18, running = 18, steals = 686, tasks = 16, submissions = 269]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 255, active = 18, running = 18, steals = 686, tasks = 16, submissions = 270]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 255, active = 18, running = 18, steals = 686, tasks = 16, submissions = 271]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 256, active = 11, running = 11, steals = 686, tasks = 15, submissions = 275]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 256, active = 8, running = 8, steals = 686, tasks = 15, submissions = 275]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 256, active = 7, running = 7, steals = 686, tasks = 15, submissions = 275]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 257, active = 23, running = 23, steals = 721, tasks = 15, submissions = 262]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 257, active = 23, running = 23, steals = 721, tasks = 15, submissions = 263]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 257, active = 23, running = 23, steals = 721, tasks = 15, submissions = 264]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 257, active = 23, running = 23, steals = 721, tasks = 15, submissions = 265]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 257, active = 23, running = 23, steals = 721, tasks = 15, submissions = 266]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 257, active = 23, running = 23, steals = 721, tasks = 15, submissions = 267]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 257, active = 22, running = 22, steals = 721, tasks = 15, submissions = 267]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 257, active = 21, running = 21, steals = 721, tasks = 15, submissions = 267]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 257, active = 20, running = 20, steals = 721, tasks = 15, submissions = 267]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 257, active = 19, running = 19, steals = 721, tasks = 15, submissions = 268]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 258, active = 28, running = 28, steals = 745, tasks = 15, submissions = 261]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 258, active = 27, running = 27, steals = 745, tasks = 15, submissions = 268]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 258, active = 27, running = 27, steals = 745, tasks = 15, submissions = 269]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 258, active = 27, running = 27, steals = 745, tasks = 15, submissions = 270]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 258, active = 27, running = 27, steals = 745, tasks = 15, submissions = 271]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 258, active = 27, running = 27, steals = 745, tasks = 15, submissions = 272]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 258, active = 22, running = 22, steals = 745, tasks = 15, submissions = 274]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 259, active = 22, running = 22, steals = 768, tasks = 18, submissions = 265]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 259, active = 22, running = 22, steals = 768, tasks = 18, submissions = 266]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 259, active = 22, running = 22, steals = 768, tasks = 18, submissions = 267]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 259, active = 22, running = 22, steals = 768, tasks = 18, submissions = 268]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 259, active = 22, running = 22, steals = 768, tasks = 18, submissions = 269]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 259, active = 22, running = 22, steals = 768, tasks = 18, submissions = 271]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 261, active = 16, running = 16, steals = 769, tasks = 18, submissions = 277]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 261, active = 15, running = 15, steals = 769, tasks = 18, submissions = 277]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 261, active = 12, running = 12, steals = 769, tasks = 18, submissions = 277]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 261, active = 11, running = 11, steals = 769, tasks = 18, submissions = 277]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 262, active = 3, running = 3, steals = 771, tasks = 18, submissions = 278]
java.util.concurrent.ForkJoinPool@27addfa1[Running, parallelism = 7, size = 263, active = 2, running = 2, steals = 771, tasks = 18, submissions = 279]
java.util.concurrent.RejectedExecutionException: Thread limit exceeded replacing blocked worker
	at java.util.concurrent.ForkJoinPool.tryCompensate(ForkJoinPool.java:2011)
	at java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3310)
	at java.util.concurrent.CompletableFuture.timedGet(CompletableFuture.java:1775)
	at java.util.concurrent.CompletableFuture.get(CompletableFuture.java:1915)
	at com.hx.test11.Test09ParallelStreamRejectEx.lambda$null$1(Test09ParallelStreamRejectEx.java:49)
	at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
	at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1382)
	at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
	at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
	at java.util.stream.ReduceOps$ReduceTask.doLeaf(ReduceOps.java:747)
	at java.util.stream.ReduceOps$ReduceTask.doLeaf(ReduceOps.java:721)
	at java.util.stream.AbstractTask.compute(AbstractTask.java:316)
	at java.util.concurrent.CountedCompleter.exec(CountedCompleter.java:731)
	at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
	at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
	at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
	at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)
java.util.concurrent.RejectedExecutionException: Thread limit exceeded replacing blocked worker
	at java.util.concurrent.ForkJoinPool.tryCompensate(ForkJoinPool.java:2011)
	at java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3310)
	at java.util.concurrent.CompletableFuture.timedGet(CompletableFuture.java:1775)
	at java.util.concurrent.CompletableFuture.get(CompletableFuture.java:1915)
	at com.hx.test11.Test09ParallelStreamRejectEx.lambda$null$1(Test09ParallelStreamRejectEx.java:49)
	at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
	at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1382)
	at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
	at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
	at java.util.stream.ReduceOps$ReduceTask.doLeaf(ReduceOps.java:747)
	at java.util.stream.ReduceOps$ReduceTask.doLeaf(ReduceOps.java:721)
	at java.util.stream.AbstractTask.compute(AbstractTask.java:316)
	at java.util.concurrent.CountedCompleter.exec(CountedCompleter.java:731)
	at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
	at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
	at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
	at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)

并行度[parallelism]和单个线程 parallelStream 可以创建的线程的关系

并行度可以通过 java.util.concurrent.ForkJoinPool.common.parallelism 来进行配置 

如下左边为 并行度 parallelism, 右边为 单个线程在 并行度为 $parallelism 的情况下, 可以在 ForkJoinPool 里面创建多个少个线程 

默认情况下 parallelism 为你 cpu 的数量[common为 cpu的数量-1], 假设我们这里为 8个cpu, commonPool 的并行度为 7 

new ForkJoinPool() 创建出来的 pool 并行度为 8 

然后可以大致推测一下, 如果我们是 上传 8 个以上的文件的话, 那么 parallelStream 可能创建的线程数会超过 [parallelism + 256], 这时候可能会抛出 RejectedExecutionException 

然后使用我们测试环境, 尝试了一下, 呵呵 果然是这样 

        // parallelism : 1 -> 1
        // parallelism : 2 -> 8
        // parallelism : 4 -> 16
        // parallelism : 7 -> 32
        // parallelism : 8 -> 32
        // parallelism : 16 -> 64

解决方式

1. 将 parallelStream 修改成为 stream 

这样是可以解决问题的, 但是 少了并行处理 似乎上传之后的相关业务处理慢了很多 

2. 控制可以并发处理 parallelStream 的线程数量

呵呵 也就是控制能够同时 处理 parallelStream 的这部分业务代码的线程的数量, 使其不超过 commonPool 的限制就行 

又或者是 调整 parallelism, 综合来看就是 调整 commonPool 可能创建的线程的数量 

但是 这个只适用于临时处理问题, 对于 实际业务情况, 还需要结合实际情况来处理 

3. 创建自定义的 ForkJoinPool 

呵呵 当时我也很奇怪, 为啥 我创建了一个自己的 ForkJoinPool 然后不管并行度设置的是多少, 然后 导入都灭有这个问题了呢? 

呵呵 知道今天 我把 pool 的相关信息打印出来, 然后 大致的比较了一下 commonPool 和 自定义的 ForkJoinPool 

我发现 自定义的 ForkJoinPool 是可以增长到超过 [parallelism + 256], 呵呵 

然后 再回来仔细看了一下 代码, 发现了这一个 "this == common" 的判断 

原来是只有 commonPool 有这个校验, 所以在我们业务场景下面 抛出了 RejectedExecutionException 

4. 如果是 parallelStream 里面的业务处理没有依赖关系, 这里的并发处理可以更新为普通的线程池来处理 

如果是 parallelStream 里面的相关业务处理 灭有依赖关系, 完全是可以使用 普通的线程池 来处理业务的 

使用普通的线程池的话 这样就可以控制线程的数量[资源]了, 更加友好一些吧, 避免创建了 大量的线程 

5. 去掉 parallelStream 里面的业务代码使用到 CompletableFuture 的地方 

问题的情况是由于基于 commonPool 的 parallelStream 的使用, 以及 parallelStream 里面的业务代码使用到了 CompletableFuture 导致的 

上面的 处理方式3, 是去掉了 commonPool, 使用了自定义的 ForkJoinPool, 跳过了 jdk 对于 commonPool 的限制 

上面的 处理方式4, 是去掉了 parallelStream, 那么这里 的处理方式就是 避免在 parallelStream 里面使用 CompletableFuture 相关  api 

至于实际如何处理, 还得结合你的实际的业务情况, 以上仅供参考 

奇怪的调试

1. 旁边变量面板 居然无法解析 tc, pc 等局部变量 

2. 暂停所有线程的断点, 居然还有一部分线程在执行?

完 

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐