ちょっと私はこのコードを持っています。プログラムを数秒間遅らせ、「スキャン中...」と表示したい
これが私が持っているものです。これはコンパイルされますが、遅延はありません
if (i==1){
try {
Thread.sleep(1);
} catch (InterruptedException ie)
{
System.out.println("Scanning...");
}
}
前もって感謝します
一時停止する場合は、_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();
}
_
Thread.sleep()
は、秒ではなく、ミリ秒単位でスリープします。
1ミリ秒の睡眠は目立ちません。 Thread.sleep(1000)
を1秒間スリープさせてください。
これはmouseEvent btwにあります
これがSwing GUIにある場合は、Thread.sleep(...)
へのすべての呼び出しを取り除くと、GUI全体がスリープ状態になり、役に立たなくなる可能性があります。代わりに、スイングタイマーを使用して、グラフィックを更新しながらGUIの遅延を生成します。
また、デバッグ時以外はSystem.out.println(...)
呼び出しを避け、代わりにGUI自体、おそらくステータスJLabelまたはメッセージダイアログとしてユーザー通知を表示することもできます。
CatchブロックにSystem.out.println("Scanning...")
があります。それを試してみたいですか?
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
Java Thread.sleepのドキュメント定義は:
Thread.sleep(t);
where t => time in millisecons to sleep
1秒間スリープしたい場合は、次のものが必要です。
Thread.sleep(1000);
いくつかの問題、あなたはそれほど遅れていない(.sleep
はミリ秒であり、秒ではありません)、catch
ステートメントで印刷しようとしています。コードは次のようになります。
if (i==1) {
try {
System.out.println("Scanning...");
Thread.sleep(1000); // 1 second
} catch (InterruptedException ex) {
// handle error
}
}
Thread.sleep()
メソッドを使用する必要があります。
これは、指定された時間ミリ秒の間、現在のスレッドの実行を一時停止するために使用されます。ミリ秒の引数値を負にすることはできません。そうでない場合は、スローしますIllegalArgumentException。
FYI( ここ からの要約)
Javaスレッドスリープの重要なポイント
コンパイラーがこの静的クラスメソッドを使用するのを(10秒など)待機します
TimeUnit.SECONDS.sleep(10);
に含まれています Java.util.concurrent.TimeUnit リバリー
system.outステートメントを移動して、最終的にブロックします。
Thread.sleep(2000);
// 2000を2秒間使用します