Javaのsleep機能 Tread sleepメソッドとは?基本情報をご紹介

- システム
エンジニア - Javaのsleep機能 Tread sleepメソッドとはどのような機能なのでしょうか。
- プロジェクト
マネージャー - Javaでスレッドを行う途中で処理を一時停止させる機能です。
Java sleep機能とは?
稼働中のソフトウェアやオペレーションシステムの機能を継続させたまま、休止状態にしておくのがパソコンのsleep機能ですが、Javaにも処理を停止させることのできるsleep機能があります。
Javaプログラムの処理の実行単位のひとつにスレッドがあります。Javaでスレッドを行う中で、その処理を一時停止させるのがJavaのsleep機能になります。
スレッドとは?
スレッドは、プログラム上の細かい処理の実行単位(ひとつひとつの処理の流れのこと)ですが、いくつかの処理を行うプログラムを作る場合、2つの方法を使うことができます。
いくつかの処理を経て、直線的に実行するプログラムをシングルスレッドといいます。この場合、プログラムの処理全体の流れは一つのタスクであり、動かすとプロセスが一つ立ち上がるということになります。
同じプログラムでも、同時進行できる処理を並行して行う場合をマルチスレッドといいます。この場合はタスクは一つですが、2つのスレッドが動いているということになります。別名で、並行処理とも呼ばれています。
スレッドの例え
スレッドとは、タスクやプログラムよりも細かい処理の実行単位です。そのためスレッドに違いはあっても、結果的に共通のタスクによって、共通のプログラムを作成することができます。
わかりやすい例えを使ってみましょう。プログラムを朝の調理支度とします。お弁当作りと朝食作りがタスクです。お弁当作りをしてから、朝食を作るという直線的なタスクを経て朝支度というプログラムを終えるのがシングルスレッドです。
一方、同じプログラムを、お弁当作りのタスクと同時並行しながら朝食を作るタスクを行うのがマルチスレッドということになります。
sleepメソッドとは?
スレッドを一時的に停止させることのできるのが、Javaのsleepメソッドです。スレッドクラスにあるため、Thread sleepメソッドと呼ばれています。
上述したように、シングルスレッドとマルチスレッドの2つの方法があります。
どんなときにsleepメソッドを使うのか
Tread sleepメソッドはどんなときに必要となるのでしょうか。例えば、待ち時間があった方が都合の良い場合、Tread sleepメソッドを使うことで利便性が上がります。
ユーザーの入力待ち、または実行を一定時間過ぎてから行いたい場合などが挙げられます。また、他のスレッドの終了を待ってからでないと進行できないような場合も待ち時間が必要です。
Tread sleepメソッドによってCPUの消費を節約することができるので、省エネルギーにもなります。ゲームを楽しむときも、ペースに合わせるためにsleep機能を役立たせることもできます。
マルチメソッド
マルチメソッドでは、Treadクラスを継承するクラスを作成したあと、runメソッドを実行する流れになります。
Treadクラスを継承したクラス(設計図)では、インスタンスと呼ばれる、メモリ上のデータや手続きであるオブジェクトを作成します。わかりやすく言うと、設計図に基づいて実際に作ったモノ(オブジェクト)のことです。
インスタンス作成後、そのインスタンスに対してstartメソッドを実行する、といった流れになります。
Java sleep のコード作成
ここでは基本的なJava sleepのサンプルコードをご紹介します。停止時間の指定ですが、1秒は1,000ミリ秒として記述する決まりなので、10秒であれば1万ミリ秒になります。
例えば、1秒止めたければ、()内に(1000)と記述し、10秒であれば(10000)と記述します。
サンプルコードの基本構文と停止時間の指定
5秒止めたい場合は、次のような記述をします。
1
|
Thread.sleep(5000);
|
また、基本構文は
1
2
|
public class ThreadSleep {
public static void main(String[] args)throws InterruptedException{
|
となります。
その後
1
|
try {Thread.sleep(5000);
|
の部分で、止める時間をミリ秒で指定しています。
ここでは5秒止める記述をします。
1
|
System.out.println(“スレッド1”);
|
try {
Thread.sleep(5000);
と記述することで、スレッド1を5秒止めることができます。
サンプルコードと結果
5秒停止するサンプルコードを以下に表示します。
1
2
3
4
5
6
7
8
9
10
11
12
|
public class ThreadSleep {
public static void main(String[] args)throws InterruptedException{
System.out.println(“スレッド1”);
try {
Thread.sleep(5000);
System.out.println(“スレッド2”);
}
catch (InterruptedException e){
System.out.println(“割り込み発生”);
}
}
}
|
このコードでは「スレッド1」が表示されてから5秒停止して「スレッド2」の表示が遅れて表される結果になります。
後述で詳しく説明しますが、例外を発生させる可能性があるため、あらかじめ予想される例外を定義する必要があります。このサンプルコードでは 「InterruptedException」という例外を定義して記述しています。
また、「5000」は、5,000ミリ秒=5秒待つという意味になっています。実行結果は5秒後に
1
2
|
System.out.println(“スレッド2”);
}
|
が処理されます。
Java sleepの注意点と例外処理
Java sleepでは、スレッドの一時停止中に、他のメソッドが割り込むという例外が発生することがあります。
これを防ぐためにはtry-catchと呼ばれる例外処理を使う必要があります。この処理を行うことで、通常通りの動作を可能にします。前述したサンプルコードの中にもtry-catchの処理があります。改めて以下の記述を確認しましょう。
・try{ に問題があるかを確かめたいコードを入力します。
・catch(Exceptione){ には実行中に例外が起きた場合に処理するコードを記入します。
これにより、例外が起こる可能性のあるコードに対する例外処理を実行し、プログラムの強制終了を防ぎます。
Java sleepの注意点
Java sleep機能を利用する際には、他にも注意点があります。例えば、「Tread」と記述するところを「tread」と、最初の「T」を小文字の「t」で入力してしまうといったミスをしがちです。この場合、実行できなくなるので気を付けましょう。
他にも、sleepメソッドで停止後、プログラムが実行されるまで待たなくてはならないため、停止時間に誤差が起こる可能性があることも覚えておきましょう。
もう1つのJava sleep機能 TimeUnit
Javaでは、もう1つのsleep機能が使えます。TimeUnitという方法で、可読性が高いという特徴により、Tread sleepより使い易いのが特徴です。秒、ミリ秒、マイクロ秒、ナノ秒といった単位ごとに明示できるのがメリットです。以下の書式が使えます。
1
2
3
4
|
TimeUnit.SECONDS.sleep(1); // 秒単位
TimeUnit.MILLISECONDS.sleep(1); // ミリ秒単位
TimeUnit.MICROSECONDS.sleep(1); // マイクロ秒単位
TimeUnit.NANOSECONDS.sleep(1); // ナノ秒単位
|
- システム
エンジニア - Javaのsleepの機能であるTread sleep メソッドの使い方や使用の注意点などが理解できました。
- プロジェクト
マネージャー - Tread sleep メソッドは便利な機能なので、この機会に使い方を覚えておきましょう。
Java sleepについて知っておこう
Java sleepの機能である、Tread sleep メソッドの基本を知って、Javaで一時停止の動作を可能にする使い勝手の良いプログラムを作成してみましょう。何かと便利に使えるようになるでしょう。
FEnetJava・Javaコラムは株式会社オープンアップシステムが運営しています。
株式会社オープンアップシステムはこんな会社です
秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
数多くのエンジニアが集まります。

-
スマホアプリから業務系システムまで
スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。
-
充実した研修制度
毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。
-
資格取得を応援
スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。
-
東証プライム上場企業グループ
オープンアップシステムは東証プライム上場「株式会社オープンアップグループ」のグループ企業です。
安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。
株式会社オープンアップシステムに興味を持った方へ
株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。
年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。


Java新着案件New Job
-
官公庁向け業務システム開発/Java/東京都千代田区/【WEB面談可】/テレワーク
月給39万~44万円東京都千代田区(永田町駅) -
販売管理システム開発/Java/東京都中央区/【WEB面談可】/テレワーク
月給49万~55万円東京都中央区(京橋駅) -
生命保険会社向けシステム開発/Java/東京都千代田区/【WEB面談可】/テレワーク
月給42万~48万円東京都千代田区(大手町駅) -
社会保険システムのパッケージ開発/Java/東京都港区/【WEB面談可】/テレワーク
月給42万~48万円東京都港区(新橋駅) -
金融機関向けシステム更改/Java/東京都江東区/【WEB面談可】/テレワーク
月給46万~51万円東京都江東区(豊洲駅) -
大手通信会社者向けWebシステム改修/Java/東京都港区/【WEB面談可】/テレワーク
月給42万~48万円東京都港区(品川駅)