Javaにおけるシングルスレッドとマルチスレッドの主な違いは、シングルスレッドがプロセスのタスクを実行するのに対して、マルチスレッドでは複数のスレッドがプロセスのタスクを実行することです。
プロセスとは、実行中のプログラムのことです。
プロセスの生成は資源を消費する作業です。
そこで、1つのプロセスをスレッドと呼ばれる複数の単位に分割することが可能である。
スレッドは軽量なプロセスです。
1つのプロセスを複数のスレッドに分割し、それぞれにタスクを割り当てることができる。
1つのプロセスに1つのスレッドが存在する場合、シングルスレッド・アプリケーションと呼ばれます。
プロセス内に複数のスレッドがある場合は、マルチスレッドアプリケーションと呼ばれる。
Javaにおけるシングルスレッドとは
シングルスレッドまたはスレッディングでは、プロセスには1つのスレッドしか含まれません。
そのスレッドは、プロセスに関連するすべてのタスクを実行する。
プログラム例を以下に示します。
図1: Javaによるシングルスレッド・プログラム
上のプログラムでは、a と b は整数型の変数です。
また、HelloWord型のオブジェクトが存在する。
このオブジェクトを使って、Add, Sub, Mul, Div メソッドを呼び出すことができる。
これらのメソッドは、足し算、引き算、掛け算、割り算を行います。
最後に、これらのメソッドは、コンソールに答えを表示します。
スレッドは1つだけで、それが出力を表示する。
Javaにおけるマルチスレッドとは
マルチスレッドアプリケーションでは、複数のスレッドが同時に実行されます。
各スレッドは、リソースを最適に利用することで、異なるタスクを同時に処理する。
Javaでは、スレッドを作成する方法は2つあります。
Runnableインタフェースを実装する方法と、Threadクラスを拡張する方法です。
マルチスレッドプログラムの例を以下に示す。
図2: Javaによるマルチスレッドプログラム
図3: mainメソッドを持つクラス
HelloWorldはRunnableインタフェースを実装したクラスです。
run メソッドを実装しています。
Runnableインターフェースは、このメソッドを持っています。
スレッドの起点となるメソッドです。
したがって、ビジネスロジックはこのメソッドの中にあります。
threadNameは新しいスレッドの名前です。
スレッドオブジェクトを作成したら、プログラマはstart()メソッドを使ってスレッドを開始することができます。
これは、runメソッドを実行します。
コンソールでは、2つのスレッドが並列に実行されていることがわかります。
Javaにおけるシングルスレッドとマルチスレッドの違い
定義
シングルスレッドとは、1つのプロセスの最初から最後まで、スレッドに邪魔されずに実行することであり、マルチスレッドとは、1つのプロセス内で複数のスレッドを許可し、リソースを共有しながら独立して実行させることである。
これが、Javaにおけるシングルスレッドとマルチスレッドの主な違いです。
基本情報
1つのスレッドが1つの処理を実行するシングルスレッド方式。
複数のスレッドで処理を実行するのがマルチスレッドです。
したがって、この点もJavaにおけるシングルスレッドとマルチスレッドの違いとなります。
結論
Javaは人気のあるプログラミング言語です。
Javaでアプリケーションを開発する大きなメリットは、マルチスレッドに対応していることです。
そのため、1つのプロセスを複数のスレッドに分割し、各スレッドが同時にタスクを実行できるようにすることが可能です。
Javaにおけるシングルスレッドとマルチスレッドの主な違いは、シングルスレッドがプロセスのタスクを実行するのに対し、マルチスレッドでは、複数のスレッドがプロセスのタスクを実行することです。