[Java] Javaスレッドの概念

http://www.weixueyuan.net/view/6024.html

他のほとんどのコンピュータ言語とは異なり、Javaにはマルチスレッドプログラミングのサポートが組み込まれています。


マルチスレッドプログラムには、同時に実行される2つ以上の部分が含まれています。プログラムのそのような各部分はスレッドと呼ばれ、各スレッドには独立した実行パスがあります。したがって、マルチスレッドはマルチタスクの特殊な形式です。

マルチタスクは実際にはすべての最新のオペレーティングシステムでサポートされているため、マルチタスクについて知っておく必要があります。ただし、マルチタスクには、プロセスベースとスレッドベースの2つの異なるタイプがあります。2つの違いを認識することは非常に重要です。

多くの読者にとって、プロセスベースのマルチタスクはより身近な形式です。プロセスは本質的に実行中のプログラムです。したがって、プロセスベースのマルチタスクの機能は、コンピュータが2つ以上のプログラムを同時に実行できるようにすることです。たとえば、プロセスベースのマルチタスクを使用すると、テキストエディタを使用するときにJavaコンパイラを同時に実行できます。プロセスベースのマルチタスクでは、プログラムはスケジューラーによって割り当てられるコードの最小単位です。

スレッドベースのマルチタスク環境では、スレッドは実行の最小単位です。これは、プログラムが2つ以上のタスクの機能を同時に実行できることを意味します。たとえば、テキストエディタは印刷中にテキストをフォーマットできます。したがって、マルチプロセスプログラムは「全体像」を扱い、マルチスレッドプログラムは詳細を扱います。

マルチスレッドプログラムは、マルチプロセスプログラムよりも管理コストが少なくて済みます。プロセスは重いタスクであり、独自の独立したアドレス空間を割り当てる必要があります。プロセス間通信は高価で制限があります。プロセス間の変換も非常にコストがかかります。一方、スレッドは軽量プレーヤーです。それらは同じアドレス空間を共有し、同じプロセスを共有します。スレッド間の通信は安価であり、スレッド間の切り替えも低コストです。Javaプログラムがマルチプロセスタスク処理環境を使用する場合、マルチプロセスプログラムはJavaによって制御されず、マルチスレッドはJavaによって制御されます。

マルチスレッドは、アイドル時間が最小限に抑えられるため、CPU使用率が最大の効率的なプログラムを作成するのに役立ちます。空き時間は公開されているため、これはJavaが実行される対話型ネットワーク相互接続環境に不可欠です。たとえば、ネットワークのデータ転送速度はコンピュータの処理能力よりもはるかに低く、ローカルファイルシステムリソースの読み取りおよび書き込み速度はCPUの処理能力よりもはるかに遅いです。もちろん、ユーザー入力もコンピュータよりもはるかに遅い。従来のシングルスレッド環境では、CPUに多くのアイドル時間があったとしても、プログラムはそのような各タスクが完了するのを待ってから次のステップを実行する必要があります。マルチスレッドを使用すると、これらのアイドル時間を取得して最大限に活用できます。

おすすめ

転載: blog.csdn.net/michellechouu/article/details/48751583