21

ねえ、私は彼らが何かを印刷するときに特定の条件を持つ3つのスレッドを持っています。これは正常に機能します。私が今やりたいのは、何かを出力する直前にスレッドを作成して、ランダムなミリ秒の間スリープ状態にすることです。私は数学の授業を使うことを考えていましたが、その方法がわかりませんでした。

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

私はただのようなものを書きますか

Thread.sleep(random());

^試してみてもうまくいかない

4

3 に答える 3

35

Thread.sleep()long値 notを取りますdouble。ここで型キャストが必要になります: -

Thread.sleep((long)(Math.random() * 1000));
于 2012-11-28T20:10:06.707 に答える
14

Thread.sleep()longスリープするミリ秒数である値を取ります。値は常にゼロに切り捨てられるため、0 と 1 の間の浮動小数点値を渡すことはできません。

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

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

于 2012-11-28T20:10:10.763 に答える
7

コードには 2 つの問題があります。

  1. あなたができる最小の時間sleep()は1ミリ秒です

  2. 型が正しくありません: doublevs. long.

これはうまくいきます:

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

0 から 1000 ミリ秒の間スリープします。

于 2012-11-28T20:10:30.420 に答える