19.0522

マルチスレッド(multiple threads) とは、
  複数の 「プログラムの処理の実行単位」 を持っていること です。
例えば、
  4人で100個の荷物を運ぶ場合:一人25個づつ運ぶとして:
    シングルスレッド(1つのプログラムしか実行できない)の時
    マルチスレッド の時
を、こんなプログラムで、比べてみましょう。
  シングルスレッドの時のコード
  マルチスレッドの時のコード

!試しに、TryKotlin で、実行しましたが、うまく動きません!
でも、それは、ブラウザ環境のせいだと思います。
コードには、根本的な問題は、ないでしょう。

それで、実行結果は、コードの後に書いてありますが、
Thread」 を、使った方が
  約3倍ほど、早く実行できました。

この例では、
  シングルスレッド の時は、4人 が、同時には実行できません。
    / 荷物を載せるための台車が、1台しかないようなイメージ.
  マルチスレッド では、4人が同時に運べるイメージです。
つまり、
  マルチスレッドを利用すると、実行が早くなる
ただし、
  マルチスレッドを、バグなく扱うのは、単純ではなく、深い知識が必要
と言われています。
ここでは、単に、マルチスレッド という 概念/意味 を、知っておきましょう


マルチスレッド を、文法的な観点から眺める
  ・ Kotlinリファレンスの構文
  ・ Javaのclassライブラリ リファレンス(Threadクラス)
この2つから見ていきますが、私は、
  おおざっぱにしか分からず、細かいところは、不明です。ご了承ください。
ただ、それでも、おおざっぱには理解できると思います。

まず、
  Kotlinリファレンス の、Thread関数のページ
です。
また、
  Javaの、Threadクラスのページ
です。

これらの大筋をまとめるとこんな感じになるでしょう

上のコード は、
  Kotlin の、thread関数
です。
そして、
  返すのは、Java の Threadクラス の インスタンス
です。

ですから結果的に、
  thread関数 を、実行すると、
  その引数である関数 を、実行するための(マルチスレッドを実現するための)
  スレッド が、生成される

    この部分は、多少なりとも、Java の、Threadクラス と Runnableインターフェイス 、
    の、知識があった方が、イメージしやすいと思います。
    (やはり、Javaの知識は、あるに越したことはないようです。
     でも、私が、Java を覚えようと思ったころ、2003年ぐらいか? には、
     Java を、やるには、C が分からないとだめだ、、みたいな迷信は、ありました。
     確かに、分かっていた方が、いいのではありますが、必須ではなかった。)
ということになります。

でも、最初に見たコード は、このリファレンス のコードとは違うぞ
と、思われると思います。
そこで、
  このリファレンスの、構文を、忠実に再現したコードを、書いてみました(26~31行目)。
    / 引数の前の文字は、「透かし文字の補助」 ですので、実際に書くと、エラーになります。
つまり、同じ事ですね。
また、
  簡単な書き方(デフォルトの引数をそのまま使っている)
  は、このコードをまねてください(と、逃げます:() が不要になっている)。
    / Kotlin では、この構文のように、
    / 関数の引数 に、デフォルトの値 を、設定できます
    / 尚、{ wm1.carry25boxes() } は、
    / () -> Unit 型(返し値がない)の、ラムダ式です。
      / そうです、関数は返し値がない 型 である必要があります。



まとめ
ここでは、
  マルチスレッド の、概念
を、具体的なコードで見ていきました。おおざっぱに理解しておいてください。
実際に使うには、場合によっては、さらに深い理解がないと、バグを起こす可能性があります。