web-dev-qa-db-ja.com

Java数秒間遅延させるには?

ちょっと私はこのコードを持っています。プログラムを数秒間遅らせ、「スキャン中...」と表示したい

これが私が持っているものです。これはコンパイルされますが、遅延はありません

 if (i==1){

        try {
            Thread.sleep(1);
        } catch (InterruptedException ie)
        {
            System.out.println("Scanning...");
        }

    }

前もって感謝します

9
user2918193

一時停止する場合は、_Java.util.concurrent.TimeUnit_を使用します。

_TimeUnit.SECONDS.sleep(1);
_

1秒間または10分間スリープする

_TimeUnit.MINUTES.sleep(10);
_

またはスレッドスリープ

_try        
{
    Thread.sleep(1000);
} 
catch(InterruptedException ex) 
{
    Thread.currentThread().interrupt();
}
_

公式ドキュメント も参照してください

TimeUnit.SECONDS.sleep()は_Thread.sleep_を呼び出します。唯一の違いは読みやすさであり、TimeUnitを使用すると、明らかでない期間でも理解しやすいでしょう。

しかし、問題を解決したい場合

_        int timeToWait = 10; //second
        System.out.print("Scanning")
        try {
            for (int i=0; i<timeToWait ; i++) {
                Thread.sleep(1000);
                System.out.print(".")
            }
        } catch (InterruptedException ie)
        {
            Thread.currentThread().interrupt();
        }
_
7
venergiac

Thread.sleep()は、秒ではなく、ミリ秒単位でスリープします。

1ミリ秒の睡眠は目立ちません。 Thread.sleep(1000)を1秒間スリープさせてください。

3
Oleksi

これはmouseEvent btwにあります

これがSwing GUIにある場合は、Thread.sleep(...)へのすべての呼び出しを取り除くと、GUI全体がスリープ状態になり、役に立たなくなる可能性があります。代わりに、スイングタイマーを使用して、グラフィックを更新しながらGUIの遅延を生成します。

また、デバッグ時以外はSystem.out.println(...)呼び出しを避け、代わりにGUI自体、おそらくステータスJLabelまたはメッセージダイアログとしてユーザー通知を表示することもできます。

CatchブロックにSystem.out.println("Scanning...")があります。それを試してみたいですか?

2
DreamUth

Java:

時間の計算には、次のメソッドを使用します。

import Java.text.SimpleDateFormat;
import Java.util.Calendar;


    public static String getCurrentTime() {
    Calendar cal = Calendar.getInstance();
    SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
    return sdf.format(cal.getTime());
}

第二:

import Java.util.concurrent.TimeUnit;

System.out.println("Start delay of 10 seconds, Time is: " + getCurrentTime());
TimeUnit.SECONDS.sleep(10);
System.out.println("And delay of 10 seconds, Time is: " + getCurrentTime());

出力:

10秒の開始遅延、時間:14:19:08

10秒の遅延、時間は14:19:18

議事録:

import Java.util.concurrent.TimeUnit;

System.out.println("Start delay of 1 Minute, Time is: " + getCurrentTime());
TimeUnit.MINUTES.sleep(1);
System.out.println("And delay of 1 Minute, Time is: " + getCurrentTime());

出力:

1分の開始遅延、時間:14:21:20

1分の遅延、時間:14:22:20

ミリ秒:

import Java.util.concurrent.TimeUnit;

System.out.println("Start delay of 2000 milliseconds, Time is: " +getCurrentTime());
TimeUnit.MILLISECONDS.sleep(2000);
System.out.println("And delay of 2000 milliseconds, Time is: " + getCurrentTime());

出力:

2000ミリ秒の開始遅延、時間:14:23:44

そして、2000ミリ秒の遅延、時間:14:23:46

または:

Thread.sleep(1000); //milliseconds
2
Gavriel Cohen

Java Thread.sleepのドキュメント定義は:

Thread.sleep(t);
where t => time in millisecons to sleep

1秒間スリープしたい場合は、次のものが必要です。

Thread.sleep(1000);
1
Kakarot

いくつかの問題、あなたはそれほど遅れていない(.sleepはミリ秒であり、秒ではありません)、catchステートメントで印刷しようとしています。コードは次のようになります。

if (i==1) {
    try {
        System.out.println("Scanning...");
        Thread.sleep(1000); // 1 second
    } catch (InterruptedException ex) {
        // handle error
    }
}
1
Rogue

Thread.sleep()メソッドを使用する必要があります。

これは、指定された時間ミリ秒の間、現在のスレッドの実行を一時停止するために使用されます。ミリ秒の引数値を負にすることはできません。そうでない場合は、スローしますIllegalArgumentException

FYI( ここ からの要約)

Javaスレッドスリープの重要なポイント

  • 常に現在のスレッドの実行を一時停止します。
  • スレッドスリープは、現在のスレッドが取得したモニターやロックを失うことはありません。
  • 他のスレッドは、スリープ中の現在のスレッドに割り込むことができます。その場合、InterruptedExceptionがスローされます。
0
Dulith De Costa

コンパイラーがこの静的クラスメソッドを使用するのを(10秒など)待機します
TimeUnit.SECONDS.sleep(10);
に含まれています Java.util.concurrent.TimeUnit リバリー

0
Sandeep Shinde

system.outステートメントを移動して、最終的にブロックします。

0
sps

Thread.sleep(2000); // 2000を2秒間使用します

0