ブラックボックスを撲滅したい

2017年1月よりフリーランスに転向したシステムエンジニアのブログ。プログラミングスクールではRubyの勉強をしていたが、現在はJavaによる開発がメイン。当ブログは筆者の学習メモを投稿していく予定。

【Java】マルチプロセス、マルチスレッドとは?

マルチプロセスとは、平行処理の一種で アプリケーションを複数実行すること。

マルチスレッドとは、平行処理の一種で 1つのアプリで複数の処理を交互に切り替えて実行すること。

 

以下、詳細説明です。

【理解する上で必要な前提知識3つ】

・平行処理

・プロセス

・スレッド

 

そもそも平行処理とは何かというと、 複数の処理を同時に実行すること。

平行処理によってソフトウェアの処理性能が向上します。

平行処理の実現方法2つはあって、それがマルチプロセスとマルチスレッドのこと。

 

 

プロセスとは、アプリケーションを起動させるとき、OSから割り振られるメモリ空間のこと。

例えるなら、ファンタジー・ゲームのMPのようなもの。

コンピュータが、限られたMP(メモリ空間)を割り振って、魔法(アプリ)を起動させるイメージです。

 

スレッドとは、プロセス内で実行される一連の処理の流れのこと。

スレッド(thread)とは、糸のことです。

マルチスレッドでは、プロセス内を複数に分割することで平行処理を実現します。

マルチスレッドは例えるなら、一本の糸(スレッド)が絡み合って、より大きな糸(アプリ)が出来上がるイメージです。

 

【マルチプロセスとマルチスレッドの違いは?】

マルチプロセスの問題点は、マルチスレッドに比べて起動に時間がかかること。

プロセス起動時にOSからメモリ空間を割り当てる必要があるからです。

逆に、プログラム異常時に他の処理に影響が出にくいというメリットはあります。

 

マルチスレッドは、すでにOSから割り振られたメモリ空間を分割して使います。

そのため、マルチプロセスに比べてパフォーマスに優れています。

しかし、複数処理を並列して走らせるため、プログラム異常時に他の処理に影響が出やすいです。

 

Javaはどのように平行処理を実現しているか?】

Javaはシングルプロセス、マルチスレッドです。

どのスレッドを実行するかはJVMが判断しています。

そのため、プログラムからは、部分的にしか平行処理を制御できません。

 

まとめ

・マルチプロセスとは、平行処理の一種で、アプリケーションを複数実行すること。

・マルチスレッドとは、平行処理の一種で、1つのアプリで複数の処理を交互に切り替えて実行すること。

Javaはシングルプロセス、マルチスレッド