``` fun main(args: Array<String>) { val ...
# getting-started
g
Copy code
fun main(args: Array<String>) {
    val pool = Executors.newFixedThreadPool(4)

    val length: Int = 10000
    var startIndex: Int = 0
    var endIndex: Int = length

    for (i in 1..4) {
        pool.execute { task(startIndex, endIndex) }
        startIndex = endIndex
        endIndex = if (i < 4 - 1) endIndex + length else 40000
    }

    pool.shutdown()
}

inline fun task(start: Int, end: Int) {
    println("Start: $start; End: $end")
}
and it almost works fine but it is possible to get this output:
Copy code
Start: 10000; End: 20000
Start: 10000; End: 20000
Start: 20000; End: 30000
Start: 30000; End: 40000