0

私の講師は、ボールが jframe の周りを跳ねるマルチスレッド グラフィックス プログラムを求める課題を私に与えました。彼は、各ボールに独自のスレッドを持たせたいと考えていました。マークすると、タイマーはマルチスレッドであり、これがこれを行う最良の方法であると彼は言いました。ボールごとに新しいスレッドを使用しましたこれにはコストがかかることはわかっていますが、ボールごとにスレッドを使用するように彼は言いました. タイマークラスはマルチスレッドですか?

タイマーを使う

Ball b = new Ball(x, y);
BallMover bm = new BallMover(b)//adds the ball to a new instance of an actionListner
theTimer.addActionListener(bm);

スレッドの使用

Ball b = new Ball(x,y);
BallMover bm = new BallMover(b);//adds the ball to a new instance of a Thread
bm.start();
4

1 に答える 1

2

Swing のドキュメントからTimer

すべてTimersが単一の共有スレッド (実行される最初のTimerオブジェクトによって作成される) を使用して待機を実行しますが、アクション イベント ハンドラーはTimers別のスレッド (イベント ディスパッチ スレッド) で実行されます。これは、アクション ハンドラーがTimersSwing コンポーネントに対して安全に操作を実行できることを意味します。ただし、これは、GUI の応答性を維持するためにハンドラーを迅速に実行する必要があることも意味します。

于 2012-12-11T10:58:51.223 に答える