支援対象地域:札幌、仙台、関東、愛知、関西、広島、福岡


はじめに

オブジェクト指向のプログラミング言語で有名なJavaですが、Javaにはライブラリが存在し、その中のクラス、メソッドを組み合わせて複雑な処理を実装しています。ライブラリの中には多種のデータを格納するArrayListクラスやに日時を取得するDateクラスなどがJavaのライブラリには存在します。この記事はその中でも並行処理の実施を担うThreadクラスについて記載していきます。

Threadクラスについて

普段のJavaプログラムの処理は、記述した順番通りに処理が行なわるだけでしたが、スレッドを用いることで同時に別々の処理を命令することができるようになります。システムの処理は基本このスレッドの技術を用いて運用されています。Javaではそのスレッドをどのように用いていくのか、その部分を解説していきます。

Threadクラスの利用

スレッドを実装するには、Threadクラスを用います。Threadクラスはjava.langに属しているクラスとなるので、import文は必要ありません。スレッドの実装に関して、以下にサンプルコードを記載しますので参考までにお宜しくお願いします。

class Sample extends Thread{
public void run(){
for(int i=0; i<5; i++){
System.out.println(i +”:スレッド実行中”);
}}}

class Main{
public static void main(String args[]){
Sample sa = new Sample();
sa.start(); system.out.println(“Main処理”);
}}

まず、スレッドの処理を実装させるには、Threadクラスのrunメソッドを実装する必要があります。上記の例では、SampleクラスにThreadクラスを継承させて、runメソッドを実装しています。次にMainメソッドを見ていきます。まずはSampleクラスをインスタンス化しています。その後Sampleクラスのstart()メソッドを呼び出しています。start()メソッドを呼び出すと自動的にThreadクラスのるrunメソッドが呼び出されます。これによりSampleクラスで定義した処理をMainメソッドと並行して処理を行うようになります。ちなみに、start()メソッドはThreadクラスで定義されているので定義する必要はありません。

上記でもスレッドの処理は実装可能ですが、判断しにくい部分も出てきますので、2つのスレッドを同時に行うサンプルコードを以下に記載しますので、こちらも参考までによろしくお願いします。

class SampleThread1 extends Thread{
public void run(){
for(int i=0; i<5; i++){
System.out.println(i +”:SampleThread1”);
try{sleep(500);
}catch(InterruptedException e){}
}}}

class SampleThread2 extends Thread{
public void run(){
for(int i=0; i<5; i++){
System.out.println(i +”:SampleThread2”);
try{sleep(1000);
}catch(InterruptedException e){}
}}}

class Main{
public static void main(String args[]){
SampleThread1 st1 = SampleThread1();
st1.start();
SampleThread2 st2 = SampleThread2();
st2.start();
}}

まず、スレッド処理を行うメソッドを持つクラスを2つ作成します。その後2つのクラスをインスタンス化し、start()メソッドを用いるとスレッド処理が可能になります。※今回の例でスレッド処理を判断しやすいように、sleepメソッドを用いて、処理時間に差を生じさせています。sleepメソッドは、()内に処理速度を記載します。今回の場合は0.5秒と1秒に設定しています。また、エラーがおこることが想定されるメソッドなのでtry~catch文の例外処理も行なっています。

以上がJavaにおいて、Threadクラスを用いた基本的なスレッド処理のコードの書き方になります。紹介した方法以外にもスレッド処理を実装する方法があったり、スレッドの動作時間の調整などの方法もあるので、色々試してみることをおすすめします。

まとめ

この記事では、JavaにおけるThreadクラスを用いてスレッドを実装する方法について記載してきました。システム内のJavaプログラム処理においてスレッド技術は必須です。またスレッドは高度な技術であり、制御する方法も身につけなければ、正しい運用は不可能なので、じっくり時間をかけて学習をすすめることをおすすめします。スレッドの技術を用いると簡単なアニメーション等も作成可能なので、Javaの開発環境が揃っていて興味がある方は作成練習してみてください。ご拝読いただきありがとうございました。