【Java開発】第30回 Thread

Java入門講座

はじめに

皆さん。こんにちは!

DreamHanksの254cmです。

今回はThreadについて説明していきます。

Java記事のまとめはこちらです。

前回の記事は【Java開発】第29回 匿名内部クラスです。

Threadとは?

スレッド(Thread)はJavaプログラムで作業を処理するものであり、すべてのJavaプログラムは一個以上のスレッドを持っています。

 

スレッドは一つの作業を担当して処理します。つまり、複数のスレッドが存在すると複数の作業を同時に処理することができます。

 

main()メソッドが基本的に提供されるスレッドであり、main()以外のスレッドを作るためには

Threadクラスを継承するか、Runnableインターフェースを実装します。

 

二つ以上のスレッドを運用しているのをMultithreadingと呼びます。

 

Threadの使い方

サンプル1

 

基本的な使い方はスレッドを使用したいクラスにThreadクラスを継承させて、

 

スレッドが処理する作業をrunメソッドに作成します。

 

そして、Threadオブジェクトのインスタンスを生成してstartメソッドを使用します。

 

スレッドのstartメソッドはrunメソッドを実行すると設計されています。

 

実行結果

 

サンプル2

 

上記のサンプルは二つのスレッドを生成して処理を行っています。

 

Thread.sleep()メソッドはメソッドの実行を引数分だけ止まるメソッドです。

 

getNameメソッドは現在実行中のスレッドの名前を返還するメソッドです。

 

上記のサンプルを実行してみると

になります。

二つのスレッドの処理が終わる前にmainメソッドが終了されます。

 

もし、mainメソッドがスレッドで処理された値をもらって実行しなければならない作業がある場合、

 

スレッドが終了される前にmainメソッドが終了されてエラーが発生します。

 

サンプル3

 

上記のようにjoinメソッドを使うとjoinメソッドを呼び出したスレッドが終了されるまで、

 

次の動作を実行しません。

 

実行結果

 

サンプル4

 

Runnableインターフェースを継承してスレッドを使用するサンプルです。

 

Threadクラスを継承することと大差はありませんが、

 

runメソッドのオーバーライドを強制することができる長点があります。

 

実行結果

 

Threadの優先順位

スレッドは優先順位を表すフィールドを持っています。そのフィールドを操作することで各スレッドの処理の優先順位を決定することができます。

 

優先順位によって該当スレッドはより多くの時間に処理を行うことができます。

 

getPriorityとsetPriorityメソッドを利用して優先順位のフィールドを操作することができます。

 

優先順位が高いほどより多くの時間に処理を行うし、優先順位の範囲は1から10までです。

 

実行結果

 

終わりに

今回の記事は以上になります。

ご覧いただきありがとうございます。

コメント