override fun toString()

in kotlinx-coroutines-core/jvm/src/scheduling/CoroutineScheduler.kt [556:605]


    override fun toString(): String {
        var parkedWorkers = 0
        var blockingWorkers = 0
        var cpuWorkers = 0
        var dormant = 0
        var terminated = 0
        val queueSizes = arrayListOf<String>()
        for (index in 1 until workers.currentLength()) {
            val worker = workers[index] ?: continue
            val queueSize = worker.localQueue.size
            when (worker.state) {
                WorkerState.PARKING -> ++parkedWorkers
                WorkerState.BLOCKING -> {
                    ++blockingWorkers
                    queueSizes += queueSize.toString() + "b" // Blocking
                }

                WorkerState.CPU_ACQUIRED -> {
                    ++cpuWorkers
                    queueSizes += queueSize.toString() + "c" // CPU
                }

                WorkerState.DORMANT -> {
                    ++dormant
                    if (queueSize > 0) queueSizes += queueSize.toString() + "d" // Retiring
                }

                WorkerState.TERMINATED -> ++terminated
            }
        }
        val state = controlState.value
        return "$schedulerName@$hexAddress[" +
            "Pool Size {" +
            "core = $corePoolSize, " +
            "max = $maxPoolSize}, " +
            "Worker States {" +
            "CPU = $cpuWorkers, " +
            "blocking = $blockingWorkers, " +
            "parked = $parkedWorkers, " +
            "dormant = $dormant, " +
            "terminated = $terminated}, " +
            "running workers queues = $queueSizes, " +
            "global CPU queue size = ${globalCpuQueue.size}, " +
            "global blocking queue size = ${globalBlockingQueue.size}, " +
            "Control State {" +
            "created workers= ${createdWorkers(state)}, " +
            "blocking tasks = ${blockingTasks(state)}, " +
            "CPUs acquired = ${corePoolSize - availableCpuPermits(state)}" +
            "}]"
    }