// TestMultipleThreads.kt
import java.lang.Thread.sleep
import kotlin.concurrent.thread

class WorkMan constructor(val name: String) {
	// class名 を、換えたのは、同じプロジェクト内なので、名前が被るから.
    fun carry25boxes() {
        var counter: Int = 0
        while (true) {
            ++counter
            println("${this.name}さん、${counter}個、運びました。")
            sleep(300)
            if (counter == 25) {
                println("ノルマ達成!")
                break
            }
        }
    }
}

val wm1: WorkMan = WorkMan("一郎")
val wm2: WorkMan = WorkMan("二郎")
val wm3: WorkMan = WorkMan("三郎")
val wm4: WorkMan = WorkMan("四郎")

fun main() {
    thread { wm1.carry25boxes() }
    thread { wm2.carry25boxes() }
    thread { wm3.carry25boxes() }
    thread { wm4.carry25boxes() }
}

/*
すべて実行するのにかかった時間: 約10秒

実行結果:
一郎さん、1個、運びました。
二郎さん、1個、運びました。
三郎さん、1個、運びました。
四郎さん、1個、運びました。
三郎さん、2個、運びました。
一郎さん、2個、運びました。
二郎さん、2個、運びました。
四郎さん、2個、運びました。
一郎さん、3個、運びました。
二郎さん、3個、運びました。
三郎さん、3個、運びました。
四郎さん、3個、運びました。
三郎さん、4個、運びました。
一郎さん、4個、運びました。
二郎さん、4個、運びました。
四郎さん、4個、運びました。
一郎さん、5個、運びました。
三郎さん、5個、運びました。
二郎さん、5個、運びました。
四郎さん、5個、運びました。
二郎さん、6個、運びました。
一郎さん、6個、運びました。
三郎さん、6個、運びました。
四郎さん、6個、運びました。
三郎さん、7個、運びました。
一郎さん、7個、運びました。
二郎さん、7個、運びました。
四郎さん、7個、運びました。
一郎さん、8個、運びました。
三郎さん、8個、運びました。
二郎さん、8個、運びました。
四郎さん、8個、運びました。
一郎さん、9個、運びました。
三郎さん、9個、運びました。
二郎さん、9個、運びました。
四郎さん、9個、運びました。
二郎さん、10個、運びました。
一郎さん、10個、運びました。
三郎さん、10個、運びました。
四郎さん、10個、運びました。
二郎さん、11個、運びました。
一郎さん、11個、運びました。
三郎さん、11個、運びました。
四郎さん、11個、運びました。
一郎さん、12個、運びました。
三郎さん、12個、運びました。
二郎さん、12個、運びました。
四郎さん、12個、運びました。
三郎さん、13個、運びました。
一郎さん、13個、運びました。
二郎さん、13個、運びました。
四郎さん、13個、運びました。
三郎さん、14個、運びました。
一郎さん、14個、運びました。
二郎さん、14個、運びました。
四郎さん、14個、運びました。
三郎さん、15個、運びました。
一郎さん、15個、運びました。
二郎さん、15個、運びました。
四郎さん、15個、運びました。
三郎さん、16個、運びました。
一郎さん、16個、運びました。
二郎さん、16個、運びました。
四郎さん、16個、運びました。
三郎さん、17個、運びました。
二郎さん、17個、運びました。
一郎さん、17個、運びました。
四郎さん、17個、運びました。
三郎さん、18個、運びました。
一郎さん、18個、運びました。
二郎さん、18個、運びました。
四郎さん、18個、運びました。
二郎さん、19個、運びました。
三郎さん、19個、運びました。
一郎さん、19個、運びました。
四郎さん、19個、運びました。
一郎さん、20個、運びました。
三郎さん、20個、運びました。
二郎さん、20個、運びました。
四郎さん、20個、運びました。
二郎さん、21個、運びました。
三郎さん、21個、運びました。
一郎さん、21個、運びました。
四郎さん、21個、運びました。
三郎さん、22個、運びました。
二郎さん、22個、運びました。
一郎さん、22個、運びました。
四郎さん、22個、運びました。
三郎さん、23個、運びました。
二郎さん、23個、運びました。
一郎さん、23個、運びました。
四郎さん、23個、運びました。
一郎さん、24個、運びました。
三郎さん、24個、運びました。
二郎さん、24個、運びました。
四郎さん、24個、運びました。
二郎さん、25個、運びました。
一郎さん、25個、運びました。
三郎さん、25個、運びました。
四郎さん、25個、運びました。
ノルマ達成!
ノルマ達成!
ノルマ達成!
ノルマ達成!

Process finished with exit code 0
 */