私は既存のJavaEEマルチスレッドアプリケーションに取り組んでいます。
私は自分のアプリケーションでこのことを理解することができません。、という名前のスレッドが1つ UserThread
あり、そのrun
メソッドのwhile(true)
状態では、ある場所からデータを読み取り、そのデータをWebsocketにプッシュします。その後、スレッドは1000秒間スリープします。
なぜこれがThread.sleep()
便利なのですか?
私は既存のJavaEEマルチスレッドアプリケーションに取り組んでいます。
私は自分のアプリケーションでこのことを理解することができません。、という名前のスレッドが1つ UserThread
あり、そのrun
メソッドのwhile(true)
状態では、ある場所からデータを読み取り、そのデータをWebsocketにプッシュします。その後、スレッドは1000秒間スリープします。
なぜこれがThread.sleep()
便利なのですか?
一度に多くのリクエストを送信しないように、読み取りや書き込みを調整するために使用されているようです。
これはタイマーをエミュレートし、x秒ごとにタスクを実行します。これは非常に悪い習慣です。java.util.Timer
またはに切り替えることを検討してくださいScheduledThreadPoolExecutor
:
ScheduledThreadPoolExecutor exec = new ScheduledThreadPoolExecutor(1);
exec.scheduleAtFixedRate(
new Runnable() {
public void run() {
// code
}
}, 0, 1000, TimeUnit.Milliseconds);