2012-11-28 19 views
12

ねえ、私は何かを印刷するときに特定の条件を持つ3つのスレッドを持っています。これはうまく動作します。私が今したいのは、ランダムな量のmsでスリープ状態にするために何かを出力する直前にスレッドを作ることです。私は数学のクラスを使っているとは思っていましたが、どうしたらいいかわかりませランダムな量のMSのスレッドをスリープ状態にする

random()は、0.0以上1.0未満のランダムなdoubleを生成する必要がありますか?

私はうまく動作しません

Thread.sleep(random()); 

^のようなものを書きますけれども

答えて

17

Thread.sleep()はないdoublelong値をとり、それを試してみました。あなたはここに型キャストが必要になります -

Thread.sleep((long)(Math.random() * 1000)); 
+0

ハンクyou!それほど感謝します! – Tom

+0

@Tom ..あなたは大歓迎です:) –

9

Thread.sleep()寝るミリ秒数ですlong値をとります。ゼロと1の間の浮動小数点値の受け渡しは、値が常にゼロに切り捨てられるため機能しません。

これを修正するには、適切な範囲からランダムな整数を生成し、それをThread.sleep()に渡します。

たとえば、最大1秒間スリープするには、Thread.sleep(random.nextInt(1000));を使用します。ここでrandomRandomのオブジェクトです。

4

あなたのコードには二つの問題があります。

  1. することができます最小時間sleep()は1ミリ秒

  2. 種類が正しくありませんされていますdoublelong

これは動作します:それは0と1000ミリ秒の間に何かのためにスリープします

Thread.sleep((long)(Math.random() * 1000)); 

関連する問題