Java でのマルチスレッドの基本を「理解」したと思います。私が間違っていなければ、大きな仕事を引き受けて、それを複数の (同時の) タスクに分割する方法を考えます。次に、これらのタスクをRunnable
またはとして実装Callable
し、それらすべてを に送信しますExecutorService
。(というわけで、そもそもここまで間違っていたら、まず正してください!!!)
run()
第二に、内部に実装するコード、またはcall()
ノンブロッキング アルゴリズムなどを使用して、可能な限り「並列化」する必要があると想像する必要があります。そして、これが難しい部分です (並列コードを記述する)。正しい?正しくありません?
しかし、私がまだJavaの同時実行性(および一般的に同時実行性を推測している)で抱えている本当の問題、およびこの質問の真の主題は次のとおりです。
そもそもマルチスレッドが適切なのはいつですか?
スタック オーバーフローに関する別の質問の例を見ました。投稿者は、巨大なテキスト ファイル (Moby Dick という本) を読み取って処理するために複数のスレッドを作成することを提案しました。考え。これについての彼らの理由は、すでに遅いプロセス (ディスク アクセス)に加えて、コンテキスト切り替えのオーバーヘッドを導入する複数のスレッドがあるためです。
マルチスレッドに適した問題のクラスは何か、常にシリアル化する必要がある問題のクラスは何か? 前もって感謝します!