【初心者向け】Javaのスレッド(Thread)・マルチスレッドとは?使い方も紹介!
  • facebookページ
  • twitterページ
  • 2019.09.29

    【初心者向け】Javaのスレッド(Thread)・マルチスレッドとは?使い方も紹介!

    スレッド(Thread)とは?

    プログラミングで使われるスレッドとは、プログラムの中の処理のはじめから終わりまでのひとまとまりの単位のことを指します。

    このスレッドの処理が単一で行われることをシングルスレッドと言います。

     

    マルチスレッド(Multithread)とは?

    一方で、複数のスレッドが同時並行して動くことをマルチスレッドと言います。

    実際のプログラムでは、マルチスレッドで動いてることが多いでしょう。

     

    マルチスレッドはどんな時に使うの?

    例えば、ブラウザのリンクをクリックした後、「やっぱり別のリンク先を見よう」と思った時に、リンク先を読み込んでいる最中でもリンクを押すことが可能ですよね。

    これは、マルチスレッドだからできることで、シングルスレッドだと読み込み中に他の動作は受け付けません。

    また、Wordでも文章を書いている途中に誤字やスペルチェックが行われていますよね?

    あれも、マルチスレッドで同時並行して処理を行っているからです。

     

    Javaのスレッド・マルチスレッドの使い方

    Javaのスレッド処理はどのように記述するのでしょうか?

    ここでは、実際にプログラムを組んで確認してみましょう。スレッドには、Threadクラスを継承したクラスを使うパターンと、Runnableインターフェースを使うパターンがあります。

    Threadクラスの使い方

    Threadクラスを継承したサブクラスを作る場合は、以下のように記述します。

    サンプルコードは以下の通りです。

    実行結果

    Runnableインターフェースの使い方

    Runnableインターフェースを使う場合は、以下のように記述します。

    サンプルコードは以下の通りです。

    実行結果

    Thread.sleepでプログラムを一時停止する方法

    Thread.sleepを使うことで、プログラムのスレッドを一定時間停止する方法もあります。

    記述方法は、以下の通りです。

    先ほどのサンプルコードを例に、スレッドを一定時間停止させながら処理を動かしてみましょう。

    sleepメソッドを使う場合には、try-catch文で例外処理を記述する必要があります。

    例外クラスには「InterruptedException」を記述しましょう。

    例外処理については、以下の記事を参考してみるのをおすすめします。

    【関連記事】

    ▶︎【Java】try-catch文の基本を解説!例外・エラー処理をマスターしよう【サンプルあり】

    実行結果は先ほど紹介したものと同じになりますが、実行してみると一つのスレッドが処理されるごとに一時停止しているのがわかると思います。

    ポテパンダの一言メモ

    ただし、sleepメソッドは誤差が発生するため、処理の順番が変わっていることもあるので注意しましょう。

    Thread.interruptで別スレッドが終了するまで待機する方法

    Thread.interruptを使うことで、別のスレッドに割り込みをかける方法もあります。

    割り込みは、sleepメソッドやjoinメソッドの待ち状態時にかけることが可能です。

    記述方法は、以下の通りです。

    interruptメソッドの動きを確認するために、以下のプログラムを実行してみます。

    実行結果

    Thread.joinで別スレッドが終了するまで待機する方法

    Thread.joinを使うことで、別のスレッドが終了するまで待機する方法もあります。

    記述方法は、以下の通りです。

    joinメソッドの動きを確認するために、以下のプログラムを実行してみます。

    実行結果

     

    Threadクラスのその他のメソッドについては、以下のサイトから確認ができるので参考にどうぞ。

    https://docs.oracle.com/javase/jp/7/api/java/lang/Thread.html

    まとめ

    Javaのスレッドの意味からスレッド・マルチスレッドの使い方、Threadクラスのメソッドについて解説しました。

    マルチスレッドの概念や仕組みを理解することで、効率的な処理のプログラムができるので、ぜひこの記事を参考に実装してみてください。


    ポテパンが提供するサービスについて

    本メディア「ポテパンスタイル」を運営する株式会社ポテパンは、エンジニアキャリア領域で複数サービスを提供しています。

    ポテパンフリーランス

    ポテパンフリーランス

    フリーランスエンジニアの方に高単価案件をご紹介しております。弊社ではフリーランス案件を常時300件ほど保有しており、その中からあなたに適した案件をご案内いたします。また、これから独立してフリーランスになる方の無料個別相談も承っております。フリーランスになった後の案件獲得方法やお金面(税金や保険など)についてお答えいたします!フリーエンジニアになりたい方向けのコンテンツも盛りだくさんです。

    ポテパンキャリア

    ポテパンキャリア

    エンジニア職専門の転職エージェントです。ポテパンキャリアでは、技術のわかるエージェントがあなたの転職をサポートします。エージェント自身がエンジニアなので、あなたと同じ目線で仕事内容や今後のキャリアについて一緒に考えることができます。年収800万円以上のハイスペック転職をご希望の方は「ポテパンプロフェッショナル」もご用意しておりますのでご利用下さいませ。

    ポテパンキャンプ

    ポテパンキャンプ

    ポテパンキャンプでは、RubyにてゼロからオリジナルのECサイトを作り上げてる3ヶ月間の実践型カリキュラムを提供しております。すでに本スクールの卒業生は、エンジニア職として様々な企業様に就職しております。なお、本スクールは受講料25万円と他社スクールに比べ格安となっており、またポテパンからご紹介させていただいた企業へ就職が決まった場合は、全額キャッシュバックいたします。



    株式会社ポテパンは、企業とエンジニアの最適なマッチングを追求しています。気になるサービスがあれば、ぜひ覗いてみてください!

    ポテクラバナー ポテプロバナー

    この記事をシェア

    • Facebookシェア
    • Twitterシェア
    • Hatenaシェア
    • Lineシェア
    pickup









    ABOUT US

    ポテパンはエンジニアと企業の最適なマッチングを追求する企業です。

    READ MORE

    ポテパンおすすめ案件