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つがあります。
[PR] Javaプログラミングで挫折しない学習方法を動画で公開中
実際に書いてみよう
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 インターフェースを用いた方法があります。
コスパとタイパ、両方結果的に良くなる良くなる学び方とは?
「スクールは高いし時間も縛られて効率が悪い」と考える方は多いと思います。
もちろん、時間も費用もかかることは間違いありません。
ただ
結果的に無駄な学びにお金も時間もかける方がリスクが高いという考えもあります。
コスパ・タイパ最適化の参考として、
テックアカデミー卒業生がスクールを選んだ理由
をご紹介します。
- ・困ったときに、質問や相談できる相手がいるため挫折しなかった
- ・プロとして必要なスキルのみを深く学べたので無駄がなかった
- ・副業案件の提供と納品までのサポートがあったので目的を達成できた
安価・短期間で広く浅く学んでも意味がありません。
本当に自分の目的が達成できるか、それが重要です。
自分にどのスキルや学び方が合っているか、どんな学習方法かなど、お気軽に
無料相談
に参加してみませんか?
カウンセラー・現役のプロへ、何でも気軽に無料相談可能。
30分か60分お好きな時間が選べて、かつ3回まで
すべて無料で
ご利用できます。
無理な勧誘は一切ない
ので、お気軽にご参加ください。
執筆してくれたメンター
松井紀明
メーカー系で17年エンジニアとして勤務後、現在はフリーのエンジニアとしてリモートワークで働いています。 Java、Perl、COBOL、最近ではRuby、PHP等、様々な言語での開発を経験しています。TechAcademyではJavaコースを担当しています。 |
Javaでスレッドを利用する方法かよく分かったので良かったです!
ゆかりちゃん、これからも分からないことがあったら質問してね!
分かりました。ありがとうございます!
TechAcademyでは、初心者でも、JavaやServletの技術を使ってWebアプリケーション開発を習得できるオンラインブートキャンプを開催しています。
また、現役エンジニアから学べる無料体験も実施しているので、参加してみてください。
プログラミングを独学で学習していて、このように感じた経験はないでしょうか?
- ・調べてもほしい情報が見つからない
- ・独学のスキルが実際の業務で通用するのか不安
- ・目標への学習プランがわからず、迷子になりそう
テックアカデミーでは、このような
学習に不安を抱えている方へ、マンツーマンで相談できる機会を無料で提供
しています。
30分間、オンラインでどんなことでも質問し放題です。
「受けてよかった」と感じていただけるよう
カウンセラーやエンジニア・デザイナー
があなたの相談に真摯に向き合います。
「自分に合っているか診断してほしい」
「漠然としているが話を聞いてみたい」
こんなささいな悩みでも大丈夫です。
無理な勧誘は一切ありません
ので、まずはお気軽にご参加ください。
※体験用のカリキュラムも無料で配布いたします。(1週間限定)