マルチスレッドのプログラムは経験がない。しかし、現在格闘しているJavaではマルチスレッドを利用している。
で、JavaDocやら説明されているサイトなどを参考にして理解を進めようとしている。分かりやすかったところといえばJava1.5 以降ではスレッドは格段に扱いやすくなっている、らしい。ちなみ時今用いているのはバージョン 1.6であり、使いやすくなったというものをふんだんに利用している。
しかし、概要は分かるのだが詳細になると書いてあることがさっぱり分からない。何が分からないか、というとタスクとスレッドの関係。
私は
・タスク : プロセスとほぼ同義語。
・スレッド : タスクの中に生成されるもの。
という概念で理解していた。タスクはOSが管理し、スレッドはプログラムで管理できる。情報処理の知識としては間違っていないのだろうと思う。
しかし、どうやらその定義では関係が説明がおかしくなる。というのもJavaDocで「OSの制御範囲であるはずのタスク」という言葉が頻発していたりするからだ。つまり、言葉の定義が違うようなのだ。そこで自分の先入観をいったん横においておき、どういう関係性かを読み解いた結果、
・スレッド : プロセスで生成されるもの。
・タスク : Java内で行うべき処理。タスクは生成されたスレッドで処理される。
でなら説明がつくのではないかと思うに至った。
この概念で大丈夫か、もう少し検証してみるつもりである。