Javaでスレッドを利用する方法を現役エンジニアが解説【初心者向け】
初心者向けにJavaでスレッドを利用する方法について解説しています。最初にJavaプログラム内で処理を行うスレッドの仕組みを解説します。Threadクラスを継承する、Runnableインターフェースを実装する場合の書き方を学習しましょう。
テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日 調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名 調査手法:インターネット調査
Javaでスレッドを利用する方法について、TechAcademyのメンター(現役エンジニア)が実際のコードを使用して初心者向けに解説します。
Javaについてそもそもよく分からないという方は、Javaとは何なのか解説した記事を読むとさらに理解が深まるでしょう。
なお本記事は、TechAcademyのオンラインブートキャンプJava講座の内容をもとに作成しています。
今回は、Javaに関する内容だね!
どういう内容でしょうか?
スレッドを利用する方法について詳しく説明していくね!
お願いします!
スレッドとは
スレッドとはJavaのプログラム内で実行される1つの処理を指します。
スレッドは英語で「Thread」と記述し「糸」という意味です。
Javaプログラムでは最低一つのスレッドが動いています。
日頃よく使っている「public static void main(String[] args)」、このmain()メソッドも「メインスレッド」というスレッドが動かしています。
スレッドの実装方法
複数の処理を同時に行いたい場合には、プログラマが新たなスレッドの作成を明示的に行い、制御しなければなりません。
スレッドの作成には「Threadクラスを継承する方法」と「Runnableインターフェースを実装する方法」の2つがあります。
実際に書いてみよう
Threadクラスを継承する方法からみていきましょう。
Threadクラスを継承するサブクラス「ThreadTest」クラスを作成、run()メソッドをオーバーライドしなければなりません。
ThreadTestクラスの参照変数「threadTest」よりstart()メソッドを呼び出すと、スレッドが起動しThreadTestクラスでオーバーライドされたrun()メソッドが呼び出されます。
class ThreadTest extends Thread { public void run() { for (int i = 0; i < 5; i++) { System.out.println("i = " + i); } } } public class CallThreadTest { public static void main(String[] args) { ThreadTest threadTest = new ThreadTest(); threadTest.start(); } }
実行結果
i = 0 i = 1 i = 2 i = 3 i = 4
Runnableインターフェースを実装する方法をみていきましょう。
Runnabaleインターフェースを実装クラスのオブジェクトをThreadクラスの引数に渡すことで、引数に渡したオブジェクトの持つrun()メソッドをstart()メソッドによって呼び出す事が可能です。
class RunnableTest implements Runnable { public void run() { for (int i = 0; i < 5; i++) { System.out.println("i = " + i); } } } public interface CallRunnableTest { public static void main(String[] args) { RunnableTest rt = new RunnableTest(); Thread th = new Thread(rt); th.start(); } }
実行結果
i = 0 i = 1 i = 2 i = 3 i = 4
まとめ
Javaの全てのプログラムはスレッドによって実行されています。
スレッドの生成方法には java.lang.Thread クラスを用いた方法と、java.lang.Runnable インターフェースを用いた方法があります。
執筆してくれたメンター
松井紀明
メーカー系で17年エンジニアとして勤務後、現在はフリーのエンジニアとしてリモートワークで働いています。 Java、Perl、COBOL、最近ではRuby、PHP等、様々な言語での開発を経験しています。TechAcademyではJavaコースを担当しています。 |
Javaでスレッドを利用する方法かよく分かったので良かったです!
ゆかりちゃん、これからも分からないことがあったら質問してね!
分かりました。ありがとうございます!
TechAcademyでは、初心者でも、JavaやServletの技術を使ってWebアプリケーション開発を習得できるオンラインブートキャンプを開催しています。
また、現役エンジニアから学べる無料体験も実施しているので、参加してみてください。