[ Java Gold 対策 ] はじめてのスレッド 4日目 : スレッドをsleepさせよう

シリーズ一覧
[Java Gold対策] はじめてのスレッド 1日目 : スレッドとは?
[Java Gold対策] はじめてのスレッド 2日目 : スレッドの作り方
[Java Gold対策] はじめてのスレッド 3日目 : スレッドの作り方2
[Java Gold対策] はじめてのスレッド <よりみち1> : 匿名クラスで書く。
[Java Gold対策] はじめてのスレッド <よりみち2> : ラムダ式で書く。
[Java Gold対策] はじめてのスレッド 4日目 : スレッドをsleepさせよう
[Java Gold対策] はじめてのスレッド 5日目 : joinメソッドで順番待ち
[Java Gold対策] はじめてのスレッド 6日目 : runメソッドで条件付き停止

目次

スレッドを操れるメソッドたち

前回までは、スレッドの生成を理解していきました。もうバッチリですね!
でも、それだけでは、処理の順番やタイミングは制御できません。

そこで!
今回からは、スレッドを制御するメソッドたちを紹介していきます。
一つ一つはシンプルな記事で、サクッと読める内容になっておりますので、ぽんぽんと進めていきましょう

  • sleepメソッド:スレッドを一時停止させる
  • joinメソッド:スレッドを順番待ちさせる
  • runメソッドを応用:スレッドを条件つきで止める

今回は、1の「sleepメソッドでスレッドを一時停止させる」方法を説明します!

sleepメソッドで一定時間停止させる

Threadクラス二用意されている「sleepメソッド」で、スレッドの処理を一定の時間とめることができます。
使い方はシンプルで、「停止させたいところでsleepメソッドを呼び出す」これだけです!

sleepメソッドの基本構文

Thread.sleep(1000);
// 1000ミリ秒(=1秒)だけ停止する

sleepメソッドは、Threadクラスに用意されているstaticメソッドです。
そのため、呼び出しは「Thread.」というふうに、クラス名から直接呼び出してあげます。

引数には、何ミリ秒間止めたいのか、という値を入力します。
このサンプルのように1000ミリ秒止めれば、つまり1秒間止まるということです。

1秒 = 1000ミリ秒 です

例外処理が必要。

sleepメソッドは「InterruptedException型の例外」を投げることがあります。
そのため、sleepメソッドを呼び出すときは、その1行だけでいいので、try-catch文で囲んであげましょう!

InterruptedException
あるスレッドが長い間一時停止している間に、他のスレッドが 割り込みをかけた場合にスローされます。
Exceptionクラスのサブクラスで、検査例外です。
→例外処理が必須です。

「割り込み」についてはまだ説明していないので、この例外がイメージしづらいでしょうか?
簡単に言うと、割り込みは、他のスレッドが他のスレッドによって「待った!俺が先だ!」とされたときです。

詳しくは以降に説明しますが、今回は「こういう例外が出るけど処理文書けばOKってことね~」くらいの理解で大丈夫です

具体的なコード

お待たせしました!
シングルスレッドのコードでsleepメソッドの使い方を見ていきましょう!
とっっても、シンプルです。

public class SleepExample {
    public static void main(String[] args) {
        for (int i = 0; i < 10; i++) {
            try {
                // 1秒だけスレッドの処理を停止する
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                System.out.println(e);
            }
            System.out.print("*");
        }
    }
}

ね、簡単でしょう?

このコードは、「一秒間停止してからコンソールに*を出力する処理」を10回繰り返すコードです。
ぜひ実際に実行してみてください!
普段の実行結果と違い、急に「自分が操っている感」を感じられますよ笑

例外処理さえ忘れなければ、無問題ですね!


今回は短いですが、この辺で。
引き続き、スレッドの制御ができるメソッドたちとお友達になっていきましょう~

(Visited 25 times, 1 visits today)
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

株式会社NEUGATEは、都内で企業研修や職業訓練を運営している会社です。主に、IT系の教育事業に力を入れています。
この記事は、株式会社NEUGATEの教育事業部が執筆をしています。

企業ホームページ:https://neugate.co.jp/

コメント

コメントする

目次